使用此 V/s 原型(prototype)的 Javascript 定义方法

标签 javascript prototypal-inheritance

在面向对象的 Javascript 中,我们可以在对象内部定义一个方法:

this.myMethod = function() {

}

或者

我们可以使用原型(prototype)方式

MyClass.prototype.myMethod = function() {

}

这两种技术有什么区别?

最佳答案

第一:

function Person(name){
    this.name = name
    this.sayHi = function(){
        return 'Hi, I am ' + this.name
    }
}

第二:

function Person(name){
    this.name = name
}
Person.prototype.sayHi = function(){
    return 'Hi, I am ' + this.name
}

在第一个版本中,每次创建一个人时,都会为他创建一个新的 sayHi 函数,而在第二个版本中,只创建一个 sayHi 函数,并在所有创建的人之间共享 -因为 Person.prototype 是他们的父级。因此,在原型(prototype)上声明方法可以提高内存效率。

来源: http://tobyho.com/2010/11/22/javascript-constructors-and/

关于使用此 V/s 原型(prototype)的 Javascript 定义方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28216551/

相关文章:

javascript - 在 Javascript 中创建可重用对象的最佳方式

javascript - Javascript 中的事件循环是否在单独的线程中执行?

javascript - laravel/angularjs JWT token 刷新

php - 如何在我的博客上编写评论框?

javascript - 在javascript中使用原型(prototype)继承

javascript - 在node.js中获取openssl流

javascript - 如何查看 Javascript 对象的原型(prototype)链?

Javascript 从构造函数扩展

javascript - 什么时候应该使用自己的命名空间,什么时候应该扩展原生 js 对象?

javascript - 向对象添加原型(prototype)会出现错误