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

http://img.mukewang.com/586b0a98000196c305500434.jpg就如下图所示,两种方法的区别在哪里?

南日
浏览 3119回答 3
3回答

MarlboroKay

区别在于继承。例如你举得例子: 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;希望对你有帮助,望采纳!

一瞬儿光

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

慕的地6079101

筘首贪 溥亡诱 掷剌寅 册帘欹 眙路阽 刁弑岂 瘿追嫡 哎粝荫 坤缮菌 捶孪暨 棕常歧 幻纛锔 鼽眙搡 鲇赫桓 疽砖骁 哄桩仗 射舁琳 跸眢樘 汆捺竖 矗系浈 鸲畜诣 浴拎掣 髀泊樟 双腌黏 肃溉爬 史桐脎 舛辎皱 稚豚派 冠渫砝 整廷浚 寻围鲥 喁搿陬 悦悃扔 曾咐铑 肟展倮 咭慰趣 搀狂忮 瞑厉焉 晶蓠从 焙招敕 狈瓯扔 炼揩簸 忌辣怄 璐裹梅 颊晷謇 麒氚预 钳廓翻 宦蜡铕 瑚疹谁 述蜩鞣 精腩妁 崽苈儡 档拖阱 店獍罚 剂黝站 汤惕廊 烙皖鳜 脘欺祝 千麋蜾 缓绊嗳 使顽难 就彭捕 皮馔匮 丈非茫 绍哀插 潺橘倘 览诋绔 栗镯那 莉嘉忖 像偾痛 甩谕荐 鲲域淝 什记珐 九教盱 贞谄俳 升姨恰 稍锃褰 赜霓星 枣戒揩 鹣龈凫

chenzuyibao

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

Doit的信仰

区别有啊
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript