JavaScript 原型,原型链,call,apply

1.原型(prototype)

1.定义:

  原型是function 对象的一个属性,它定义了构造函数制造出的对象的公共祖先。通过该构造函数产生的对象,可以继承该原型的属性和方法,该原型也是对象。

2.用处

  利用原型的特点和概念,可以提取其公用属性。

3.原型的增删改查

 1  //对象
 2 Person.prototype.lastname = 'curry';
 3   function Person(){
 4       /...
 5   }
 6 var obj = new Person();//创建对象
 7 //修改,增加,改
 8 Person.prototype.(属性) = ;
 9 //删除
10 delete Person.prototype.(属性)
11 12 //原型也可以这样写
13 Person.prototype = {
14     /.../
15 }

 

4.constructor(构造器)

  作用:对象如何查看对象的构造函数

  返回值:构造函数

对象本身没有constructor属性的,原型(prototype)中的属性

constructor:指向构造函数

  

5.__proto__

__ 为隐式命名规则,系统命名的,隐式属性

作用:对象查看原型

  (对象).__proto__

    

  解释: 当创建对象时,会隐式创建一个this 对象,this 对象里面有__proto__ 属性,该属性指向 构造函数的原型。

6.原型链

类似于继承,和作用域相似

1.如何构成原型链?

  

2.原型链上的增删改查

只能通过构造函数的原型去增删改查

3.绝大多数对象的最终都会继承 Object.prototype

  • undefined null 没有原型

  • toFixed() 保留两位数字

  • Math.ceil 向上取整Math.floor 向下取整

4.Object.create(原型)


  var obj = Object.create(null);// null可以是对象

2.call和apply

作用: 改变this 指向

区别: 后面传的参数不同

  1. apply 后面需要传一个arguments(数组)

  2. call 需要把实参按形参的个数和顺序传进去

1 function test(){
2     //..
3 }
4 test() --> test().call();  //两者等价

 

 

 

posted @ 2017-10-13 13:07  im.lhc  阅读(602)  评论(0编辑  收藏  举报