原型和原型链

Posted fuguy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了原型和原型链相关的知识,希望对你有一定的参考价值。

构造函数

function Stu(name,age){
this.name=name;
this.age=age;
}
instanceof 查看引用类型对象是属于哪个构造函数的方法,通过__proto__ 一直往上找prototype,直到找到Object

原型规则和示例

所有的引用类型(数组/对象/函数)都可有扩展属性,都有一个隐式原型__proto__属性,所有函数都可以扩展prototype显示原型属性,属性值是个普通的对象,
所有的引用类型试图得到一个它本身的某个属性,会通过它的隐式原型__proto__去找它构造函数中的prototype
// 不希望打印出原型的属性,只打印自身属性
for(let item of f){ if(f.hasOwnProperty(item)){ console.log(item) } }

原型链

let f =new Foo();
f.alertName= function(){
// 方法具体实现
}
f.toString() //toString方法在Foo原型中找,找不到接着要去 f.__proto__.__proto__中查找

New一个对象的过程

  • 创建一个新的对象
  • this指向这个新的对象
  • 执行代码,即对this赋值
  • 返回this

原型链继承

function Elem(id){
this.elem =document.getElementById(id);
}
Elem.prototype.html =function(val){
if(val){
return this.elem.innerHTML;
}
this.elem.innerHTML= val;
return this; //将Elem对象返回
}
Elem.prototype.on =function(type,func){
this.elem.addEventListener(type,func);
return this;
}
const elem =new Elem(‘div1‘);
elem.html(‘张三‘).on(‘click‘,function(){
console.log(‘点击了文本,打印张三‘);
}).html(‘李四’)


以上是关于原型和原型链的主要内容,如果未能解决你的问题,请参考以下文章

面向对象中的原型和原型链

JavaScript之粗浅原型和原型链

原型对象和原型链

js 继承与原型链

原型&&原型链一语道破梦中人

原型,原型链,给予原型和class的继承