博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
prototype
阅读量:6501 次
发布时间:2019-06-24

本文共 1026 字,大约阅读时间需要 3 分钟。

prototype是js实现代码共享,继承的利器.

1 共享

1 var Person = function(name){ 2     this.name = name; 3 } 4 Person.prototype.pName = function(){ 5    alert(this.name);   6 } 7  8 var p1 = new Person(); 9 var p2 = new Person();10 alert(p1.pName === p2.pName); //true

   细节:

    1 new Person() 相当于

                  var obj = {};  //创建一个新对象

                  obj.__proto__ = Person.prototype;   //把函数的prototype属性赋给新对象的原型属性

                  Person.call(obj);

     2 p1.pName 执行时, 先去p1对象本身找方法,如没有则到__proto__属性找

 

2 继承

 

1 var Person = function(name){ 2     this.name = name; 3 } 4 Person.prototype.pName = function(){ 5     alert(this.name);   6 } 7   8 var Student = function(name,score){ 9     Person.pName.call(this,name);10     this.score = score;          11 }12 Student.prototype = new Person();13 14 var stu = new Student("stu");15 stu.pName(); //stu

 

细节:

    1, 12行,把Student.prototype的设为Person对象,该对象的__proto__属性有pName方法

    2,  stu.pName 执行时, 在找对象本身此方法,没有 -> stu.__proto__(此时为Person对象),没有 -> Person().__proto__,找到

最终通过对象prototype链实现了继承

 

总结:

1 无new不谈prototype

2 构造函数创造了原型链

 

 

 

 

 

转载于:https://www.cnblogs.com/79home/p/3539950.html

你可能感兴趣的文章
LeetCode 459 Repeated Substring Pattern
查看>>
POJ 3268 Silver Cow Party
查看>>
进程线程及堆栈关系的总结
查看>>
Android Camera开发:使用TextureView和SurfaceTexture预览Camera 基础拍照demo
查看>>
EMLS项目推进思考
查看>>
python_os 的知识点
查看>>
Eclipse快捷键 10个最有用的快捷键
查看>>
2018-2019-1 20165302 实验五 通讯协议设计
查看>>
git 提交跳过认证
查看>>
Reading papers_11(读Integrating local action elements for action analysis相关文章)
查看>>
快速寻找满足条件的两个数
查看>>
系统时钟初始化实例
查看>>
Linux磁盘分区,挂载
查看>>
grep命令的使用
查看>>
Titanium -- 运行app出现错误: TypeError: argument of type 'NoneType' is not iterable
查看>>
软件功能描述
查看>>
ES6转换为ES5
查看>>
京东校招java笔试题_试卷: 京东2019校招笔试Java开发工程师笔试题(1-)
查看>>
java怎么删除创建的类_一个java创建,删除,构建Jenkins等功能的JenkinsUtil工具类...
查看>>
编程java梦想数_JAVA基础总结
查看>>