理解JavaScript的原型Prototype

帮助理解JavaScript的原型Prototype

几乎所有的对象都有一个prototype,prototype是另一个用作属性的备用源的对象,当一个对象访问自身没有属性时,它会从它的prototype搜索该属性,如果没有找到就继续从它的prototype的prototype查找,依此类推,直到 null 为止。

空对象的原型

原型链最终的指向是Object的prototype, 而Object中的__proto__是null

let empty = {};
console.log(empty.toString);
console.log(empty.toString());

输出:

[Function: toString]
[object Object]

其他对象(数组、函数等等)的默认属性

  • 许多对象没有直接将Object.prototype作为自己的原型,但有自己的默认属性
  • 从Function.prototype派生的函数和从Array.prototype派生的数组
console.log(Object.getPrototypeOf(isNaN) == Function.prototype);
console.log(Object.getPrototypeOf([]) == Array.prototype);

输出:

true
true

Object.create 创建具有特定原型的对象

protoRabbit充当所有兔子共享的属性的容器

单个兔子对象(如杀手兔子)包含仅适用于自身的属性(在本例中为type),并从其原型派生共享属性

let protoCat = {
  speak: function (line) {
    console.log(`${this.type}小猫说:${line}` );
  }
}
let WhiteCat = Object.create(protoRabbit)
WhiteCat.type = '白色'
WhiteCat.speak('喵喵!')

输出:

白色小猫说:喵!
  • 发表于 2020-09-19 17:10
  • 阅读 ( 24 )
  • 分类:前端开发

0 条评论

请先 登录 后评论
库库巴
库库巴

56 篇文章

作家榜 »

  1. 库库巴 56 文章
  2. 素质教育的漏网之鱼 39 文章
  3. 特效搬运工 31 文章
  4. 噢嚯 3 文章
  5. admin 1 文章
  6. 手机用户7182 0 文章
  7. Axizs 0 文章
  8. 哄哄 0 文章