js prototype 理解


注意:

  1. 当构造函数内部有同名属性时,实例对象访问的属性为构造函数内的属性,否则向上查找原型链上的属性

  2. 在原型链上添加方法时,不能够使用箭头函数

  3. 在原型链上添加方法时,注意调用原型链方法的实例对象属性,不要对象调用的方法添加到数组上!!!
```js
// 1. 声明一个函数
function Employee(name,job,born){
  this.name=name;
  this.job=job;
  this.born=born;
}

// 2. 为函数原型链添加一个 salary 属性方法(三种方式)
// 第一种方式 Object.prototype.salary=function(){document.write(bill === this)};
// 第二种方式 employee.__proto__.__proto__.salary= function(){document.write(bill === this)};
// 第三种方式
Employee.prototype.salary = function(){
  // bill是实例对象,this同样指向当前实例
  console.log(bill === this) // true
}
Employee.prototype.name = '小明'
// 3. 创建实例
var bill=new Employee("Bill Gates","Engineer",1985);

// 4.调用原型链方法
bill.salary()
bill.name // 指向实例方法中的name而非原型链上的name,当实例方法访问不到name属性时才向上查找原型链上的同名属性
```

持续补充中。。。

posted @ 2019-03-07 17:47  亼乾  阅读(104)  评论(0)    收藏  举报