原型和原型链
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(‘李四’)
以上是关于原型和原型链的主要内容,如果未能解决你的问题,请参考以下文章