[基础语法求解]使用prototype与直接用.添加成员的底层实现区别

ipqtjmqj 2016-03-14 12:33:55
我知道两者效果的不同, 用prototype添加成员后, 下次new出来的变量中就会有新添加的成员, 而直接用.添加的则没有, 相当于是静态成员.
所以我想问的是底层的实现原理
...全文
163 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
天际的海浪 2016-03-14
  • 打赏
  • 举报
回复
引用 2 楼 ipqtjmqj 的回复:
[quote=引用 1 楼 jslang 的回复:] http://firefly-zp.iteye.com/blog/1249816
我知道prototype是一个类似指针的东西, 实际上我更想知道的是为什么非要用prototype而直接添加成员不可以[/quote] 直接添加方法给成员(实例对象)也是可以的,这方面javascript是很灵活的。 但是当要创建很多实例对象时,每个对象都要把所有的方法重新添加一遍。这样即影响效率又浪费内存。
ipqtjmqj 2016-03-14
  • 打赏
  • 举报
回复
引用 6 楼 functionsub 的回复:
function Test(){
   this.name = 'test';
}
Test.prototype.show = function(){}
var obj = new Object(); // (1)

(function(){
    for(var p in Test.prototype){ // (2)
        obj[p] = Test.prototype[p];
    }
    Test.call(this); // (3)
    return this; // (4)
}).call(obj);// (1)中的让this指针指向obj
谢谢,我差不多懂了
functionsub 2016-03-14
  • 打赏
  • 举报
回复
function Test(){
   this.name = 'test';
}
Test.prototype.show = function(){}
var obj = new Object(); // (1)

(function(){
    for(var p in Test.prototype){ // (2)
        obj[p] = Test.prototype[p];
    }
    Test.call(this); // (3)
    return this; // (4)
}).call(obj);// (1)中的让this指针指向obj
functionsub 2016-03-14
  • 打赏
  • 举报
回复
引用 4 楼 ipqtjmqj 的回复:
[quote=引用 3 楼 functionsub 的回复:] (1)创建一个新的对象,并让this指针指向它; (2)将函数的prototype对象的所有成员都赋给这个新对象; (3)执行函数体,对这个对象进行初始化操作; (4)返回(1)中创建的对象。 以上是网上抄了一段内容,new 一个Function的过程,不知道这样说你能理解吗?
这里面第1步创建对象,创建的是什么对象,是Object对象吗, 还是Function对象[/quote] Object
ipqtjmqj 2016-03-14
  • 打赏
  • 举报
回复
引用 3 楼 functionsub 的回复:
(1)创建一个新的对象,并让this指针指向它; (2)将函数的prototype对象的所有成员都赋给这个新对象; (3)执行函数体,对这个对象进行初始化操作; (4)返回(1)中创建的对象。 以上是网上抄了一段内容,new 一个Function的过程,不知道这样说你能理解吗?
这里面第1步创建对象,创建的是什么对象,是Object对象吗, 还是Function对象
functionsub 2016-03-14
  • 打赏
  • 举报
回复
(1)创建一个新的对象,并让this指针指向它; (2)将函数的prototype对象的所有成员都赋给这个新对象; (3)执行函数体,对这个对象进行初始化操作; (4)返回(1)中创建的对象。 以上是网上抄了一段内容,new 一个Function的过程,不知道这样说你能理解吗?
ipqtjmqj 2016-03-14
  • 打赏
  • 举报
回复
引用 1 楼 jslang 的回复:
http://firefly-zp.iteye.com/blog/1249816
我知道prototype是一个类似指针的东西, 实际上我更想知道的是为什么非要用prototype而直接添加成员不可以

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧