ES6--原型及原型链
2020-06-26 04:24
99 查看
1、构造函数和原型prototype
(1)原型prototype:每个构造函数都有一个prototype属性,指向一个对象。prototype的本质也是一个JavaScript对象,称为原型对象,这个对象的所有属性和方法都会被构造函数所拥有。因此,可将共用的一些方法直接定义在prototype上,这样所有对象实例就可以共享这些方法;
(2)作用:原型prototype的作用是共享方法、节约内存;
// 1、构造函数 function Star(uname, age) { this.uname = uname; this.age = age; } // 通过原型 prototype 添加共有的方法 Star.prototype.sing = function () { console.log("I can sing songs"); } // 所有对象实例都可以使用 prototype 里面的共享方法 var zhangsan = new Star("zhangsan", 18); var lisi = new Star("lisi", 20); zhangsan.sing(); //输出 I can sing songs lisi.sing(); //输出 I can sing songs
2、对象原型 __ proto __
对象自身的一种属性,它指向原型对象prototype,创建的对象实例里面有__ proto __,它指向构造函数的prototype,因此可以使用prototype里面的方法。
3、constructor属性
原型对象prototype和对象原型 __ proto __里面都有一个constructor属性,constructor可以指回构造函数本身。
4、原型链
5、成员查找机制
根据原型链一层与层往上找:
实例对象→→→构造函数原型对象→→→Object原型对象
6、利用prototype对内置对象进行扩展自定义方法
如数组里面有很多方法,但是没有求和方法,我们可以利用原型对象prototype对数组进行扩展:
console.log(Array.prototype); //可以查看数组原有的方法 Array.prototype.sum = function () { let sum = 0; for (let i = 0; i < this.length; i++) { sum += this[i]; // this指向调用这个方法的数组 } return sum; } console.log(Array.prototype); //再次查看数组的方法 可以找到有新扩展的 sum 方法 var arr = [1, 2, 3, 4] console.log(arr.sum()); //输出 10
相关文章推荐
- JS中的原型与原型链的简单理解
- 深入理解原型对象和原型链
- JS中的原型及原型链的一点总结
- 浅谈JS原型对象和原型链
- 谈谈JS的核心技术:原型对象和原型链
- js 原型和原型链
- 原型与原型链
- 深入理解JavaScript系列(5):强大的原型和原型链
- 【JavaScript】原型及原型链
- JS核心系列:浅谈原型对象和原型链
- 浅谈js原型以及原型链
- 深入分析JS原型链以及为什么不能在原型链上使用对象
- 创建对象有几种方法,原型、构造函数、实例、原型链
- (转)【javascript基础】原型与原型链
- 原型和原型链
- 前端基础知识总结-原型与原型链
- js 原型和原型链详解,总结的很好,值得学习
- JS(原型和原型链)
- 【前端】JS原型与原型链
- 原型、原型链