答案前端面试题谈谈你对原型与原型

北京去哪个医院治疗白癜风 https://baike.baidu.com/item/%E5%8C%97%E4%BA%AC%E4%B8%AD%E7%A7%91%E7%99%BD%E7%99%9C%E9%A3%8E%E5%8C%BB%E9%99%A2/9728824?fr=aladdin

谈谈你对原型与原型链的理解

答案解析:

原型

所有引用类型都有一个__proto__(隐式原型)属性,属性值是一个对象;

所有函数都有一个prototype(显示原型)属性,属性值是一个对象;

所有引用类型的__proto__属性指向它构造函数的prototype,它们其实是同一个对象(下列代码最后一行)。

//定义一个构造函数

functionDemo(){

this.a=1

this.b=2

}

//创建一个Demo的实例对象

constd=newDemo()

console.log(Demo.prototype)//显示原型属性

console.log(d.__proto__)//隐式原型属性

console.log(Demo.prototype===d.__proto__)//返回ture

一般通过构造函数.prototype来追加属性、方法,实例对象就可以访问了。

好处是当一个构造函数有多个实例对象时,所有实例对象都可以使用,实现代码的复用。

//通过显示原型属性操作原型对象,追加一个x属性

Demo.prototype.x=

console.log(d.x)//返回

原型链

刚刚说过,原型的属性值是一个普通的对象,那么这个对象又会有__proto__属性,只要有对象就会又有__proto__属性…

那什么时候到头呢?

我们知道,js基本数据类型中的引用类型只有object。所以,最后会到object的__proto__,其值为null。

当一个实例对象调用属性或方法时,如果自身没有,则会去原型上找,原型没有则去原型的原型上找,一层一层向上查找形成一个链式结构,称为原型链。

坚持每天花20分钟来学习与思考

不要等到找工作时才狂刷题

提倡每日学习

不要慌不要慌

太阳下了有月光

—END—

扫码


转载请注明:http://www.aierlanlan.com/rzgz/764.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了