为了账号安全,请及时绑定邮箱和手机立即绑定

给对象直接添加属性和在原型对象上添加有什么区别?

给对象直接添加属性和在原型对象上添加有什么区别?

南日 2017-01-03 10:23:08
就如下图所示,两种方法的区别在哪里?
查看完整描述

3 回答

已采纳
?
MarlboroKay

TA贡献189条经验 获得超236个赞

区别在于继承。

例如你举得例子: 

var book1 = new Book();

book1.c = 'Hello';

var book2 = new Book() 

console.log( book2.c ) //没有结果。

但是用 prototype 就不一样了

Book.prototype.c = 'Hello';

var book2 = new Book();

console.log(book2.c) // Hello;

希望对你有帮助,望采纳!

查看完整回答
4 反对 回复 2017-01-03
  • 慕设计2812226
    慕设计2812226
    感觉你说的是废话,book2你有赋值吗? 你都没有给book2赋值,输出book2.c肯定没结果
?
一瞬儿光

TA贡献178条经验 获得超70个赞

上面属于原型扩展,下面是直接定义。没有大的本质区别,不同在于,你并不是任何时候都可以像第二种一样直接对Book原型内部定义。

查看完整回答
1 反对 回复 2017-01-03
?
chenzuyibao

TA贡献3条经验 获得超0个赞

你通过类不就是想通过这个模型创建更多的对象,如果在函数里直接添加方法,那你每次创建新的对象的时候都会重新创建这个函数,但是创建这个函数的机制都是相同的,这效率就低了。所以可以通过直接把这个方法函数在全局创建,但是在全局定义的函数只用于这个对象调用,那这个全局对象也太浪费了。或者有很多方法,那就要创建很多的全局函数,这更不可能了。

另一种就是通过原型定义。

查看完整回答
反对 回复 2017-01-03
?
Doit的信仰

TA贡献44条经验 获得超11个赞

区别有啊

查看完整回答
反对 回复 2017-01-04
  • 3 回答
  • 0 关注
  • 3118 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信