js原型,原型链的理解

原型

  1.所有引用类型(函数、数组、对象)都拥有__proto__属性(隐式原型),属性值是一个普通的对象

  2.所有函数都有一个prototype属性(显式原型)属性值是一个普通的对象

  3.所有引用类型的__proto__指向它构造函数的prototype

var arr = [1,2,3];
arr.__proto__ === Array.prototype;  //true

var obj = {};
obj.__proto__ === Object.prototype; //true

原型链

  当访问一个对象的某个属性时,会先在这个对象本身属性上查找,如果没找到,则去它的__proto__隐式原型上查找,既它的构造函数的prototype,如果还没找到,就在它的构造函数的prototype的_proto__中查找,这样一层一层向上查找就会形成一个链式结构,我们称之为原型链。

 

this详解:

1.谁最终调用函数,this指向谁

a.this指向的永远只可能是对象

b.this指向谁不取决于this写在哪,而是取决于this在哪调用

2.this指向的规律(与函数调用的方式息息相关)

a.通过函数名 () 直接调用,this指向window

b.通过对象.函数名()调用的,this指向这个对象

c.函数通过数组的一个元素,通过数组下标调用的,this指向这个数组

d.函数作为window内置函数的回调函数调用时,this指向window,如setTimeout。seterval等

e.函数作为构造函数用new关键字调用时,this指向新new出来的对象

 

JS中,万物皆对象,但对象也是有区别的,分为普通对象和函数对象。

 

posted @ 2019-06-25 15:40  一顿操作猛如虎  阅读(348)  评论(0编辑  收藏  举报