美文网首页
js原型链之prototype,__proto__以及const

js原型链之prototype,__proto__以及const

作者: 晨阁先生 | 来源:发表于2020-07-27 18:23 被阅读0次
function a(){
    this.a1 = 5
}
a.prototype.getA = function(){
    console.log(this.a)
}
var aa = new a()


function b(){
    this.b1 = 10
}
b.prototype = new a()
var bb = new b()

一、prototype

只有函数对象有,指向该函数的原型对象

  • Object.prototype是一个对象,用于表示Object的原型对象。
  • 几乎所有的JavaScript对象都是Object的实例,其原型链上最后一个就是指向Object.prototype。
  • 一个典型的对象继承了Object.prototype的属性和方法。
  • 也可以创建没有原型对象的对象,比如通过Object.create(null)创建,或通过Object.setPrototypeOf(obj, null)方法来改变指定对象的原型对象。
  • 改变Object.prototype的属性和方法,或给Object.prototype添加属性和方法,都会影响到原型链上的所有对象,除非这些对象本身有定义相同的属性和方法进一步覆盖。

代码(返回true)


console.log(Object.prototype == Object.prototype)
console.log(Function.prototype == Function.prototype)

二、__proto__

每个实例对象( object )都有一个私有属性(称之为 proto )指向它的构造函数的原型对象(prototype )

代码(返回true)

console.log(Object.prototype.__proto__ == null) //原型链最顶端
console.log(Object.__proto__ == Function.prototype) //Object是Function的实例 ??
console.log(Function.__proto__ == Function.prototype)//Function是Function的实例 ??
console.log(Function.prototype.__proto__ == Object.prototype)//Function.prototype是Object的实例 ??

console.log(a.__proto__ == Function.prototype)
console.log(aa.__proto__ == a.prototype)
console.log(bb.__proto__ == b.prototype)

console.log(a.prototype.__proto__ == Object.prototype)
console.log(b.prototype.__proto__ == a.prototype)

三、constructor

返回对创建此对象的函数对象的引用。(函数对象原型永远指向其一个实例)

代码(返回true)

console.log(Function.constructor == Function)
console.log(Function.prototype.constructor == Function)
console.log(Function.__proto__.constructor == Function)

console.log(Object.constructor == Function)
console.log(Object.prototype.constructor == Object)
console.log(Object.__proto__.constructor == Function)

console.log(a.constructor == Function)

console.log(a.prototype.constructor == a)
console.log(b.prototype.constructor == a)
console.log(aa.constructor == a)
console.log(aa.__proto__.constructor == a)
console.log(bb.constructor == a)

相关文章

  • js原型链之prototype,__proto__以及const

    以下打印返回结果都为true;

  • js原型链之prototype,__proto__以及const

    一、prototype 只有函数对象有,指向该函数的原型对象 Object.prototype是一个对象,用于表示...

  • JavaScript原型链

    js原型链 原型链是JS面向对象的基础非常重要 所有对象只有__proto__属性,而函数具有prototype属...

  • js基础知识(二)

    一、js原型和原型链 1、原型讲解: 普通的对象:是没有prototype属性的,只有隐藏属性__proto__,...

  • JavaScript 学习

    JS 原型与原型链 每个对象都有 __proto__属性,但只有函数对象才有 prototype 属性 所有对象的...

  • JS原型链

    JS原型链 回顾一下类,实例,prototype,__proto__的关系 另外有: 对于p1.construcr...

  • JS原型链

    最简短精炼的JS原型链介绍:1.所有函数的__ proto__都是Function.prototype2.所有实例...

  • 原型和原型链的由来&在数据结构中的关系

    关键词: 原型(prototype)和原型链(__proto__) 数据结构 全局对...

  • js面向对象

    1.函数的原型链(__ proto__,prototype,constructor ) 函数的原型(prototy...

  • 原型和原型链

    prototype 原型,每一个函数都有一个prototype属性,也叫原型对象 __proto__ 原型链,每一...

网友评论

      本文标题:js原型链之prototype,__proto__以及const

      本文链接:https://www.haomeiwen.com/subject/bcoalktx.html