码迷,mamicode.com
首页 > 编程语言 > 详细

容易遗忘的Javascript点

时间:2020-03-03 01:14:40      阅读:92      评论:0      收藏:0      [点我收藏+]

标签:--   length   保留   不可   转换   ++   部分   ref   com   

 

var data=[{name:"liuhf",age:19},{name:"wangwu",age:21}]

function print_name(){
  console.log(this.name)
}

print_name.call(data[0])   // liuhf


/*----------------------------*/
for(var i=0;i<data.length;i++){
  console.log(i)
  data[i].eat=function(){console.log("my index is"+i)}
}

 

  

1.关于 JavaScript中的 Array.prototype.slice.call( )

function test(){
  var _args=Array.prototype.slice.call(arguments);
 console.log(args);
}

test(1,3);   //[1,3]  

此函数可以将 类数组(此处为arguments)转换为真正的数组, 这个方法可以类数组转换成真正数组

。 前提是此对象有length属性。(IE下 Dom节点集合不可转)

 

1) 先来说一个有趣的分享。

var a_arr=[1,2,3];

a_arr.get=function(){return 0};

由于 a_arr是一个附带get方法的一个数组。大家不用觉得奇怪,数组是对象,这么加个get方法没有毛病。Array.prototype.slice.call(a_arr)     //    ==>> [1,2,3]  输出变成这样。

说明slice过程会仅仅保留数组部分,不会保留其他杂项。 于是上述灰色代码部分的例子就可以理解了。

 

2)  关于call的理解。-----------------------------  停止线 -----------------------

 

 

 2. 关于对象转化数组,类数组转化为数组的一些操作总结。

let array_like_obj = {
 ‘0‘: ‘a‘,
 ‘1‘: ‘b‘,
 ‘2‘: ‘c‘,
 length: 3
};

real_arr=Array.from(arrayLike)   //  ==>> ["a", "b", "c"]

/*---------------------------------------------------------------*/

let array_like_arr = [1,2,3] ;

array_like_arr.get=function(){ return 0 }  

Array.from(array_like_arr)  // [1,2,3]

// 或者
Array.prototype.slice.call(array_like_arr) // [1,2,3]

 

  

 

 

 


 

 

容易遗忘的Javascript点

标签:--   length   保留   不可   转换   ++   部分   ref   com   

原文地址:https://www.cnblogs.com/liuliu-hai/p/12399050.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!