首页 > 代码库 > javascript学习笔记

javascript学习笔记

1.通过Array.prototype.slice.call(fakearray)将伪数组转化为数组

(也可以通过调用[].slice.call(fakearray)将伪数组转化成真正的数组,但是标题中的方法是通过原型调用,效率非常高,推荐)

原生JS种的常见的伪数组类型有:arguements,调用getElementsByTagName产生的HTMLCollection,document.childNodes,Element类型中的attributes属性中包含的NamedNodeMap类似于Nodelist伪数组对象。

1
2
3
4
5
6
7
var fakeArray01 = {a:‘a‘,b:‘b‘,length:2};//没有length下标对应的值
var arr01 = Array.prototype.slice.call(fakeArray01);
alert(arr01[0]);//undefined
         
var fakeArray02 = {0:‘a‘,1:‘b‘,length:‘num‘};//length不是数值
var arr02 = Array.prototype.slice.call(fakeArray02);
alert(arr02[1]);//undefined

即使伪数组被转化成了真正的数组,但是数组中的值都是undeifined.

2.原型式继承的原理

prototype与[[ptototype]]的理解:

每一个函数都有一个显式的prototype,代表了对象的原型(构造函数所创建出来的对象的原型)。

每个对象都有一个叫做[[prototype]]的内部属性,指向于它所对应的原型对象。

prototype 的根是Object.prototype,Object.prototype 的[[prototype]]的值是NULL;

3.为什么说undefined是null的子类

因为基本数据类型可以说是引用数据类型的子类(只不过是为了提高存取的效率,存放的位置不同),对应的undefined代表了无值的基本呢数据类型,

对应的null代表了无值的引用数据类型,再根据第一句话,可以牵强的推出undefinde是继承自null?

 

javascript学习笔记