相关疑难解决方法(0)

使用原型的优点,直接在构造函数中定义方法?

我想知道使用这些中的任何一个是否有任何优势,我应该走哪条路?

构造方法:

var Class = function () {

    this.calc = function (a, b) {
        return a + b;
    };

};
Run Code Online (Sandbox Code Playgroud)

原型方法:

var Class = function () {};

Class.prototype.calc = function (a, b) {
    return a + b;
};
Run Code Online (Sandbox Code Playgroud)

我不喜欢这样,使用原型,方法定义与类分开,我不知道是否有任何特定的原因我应该使用它而不是第一种方法.

此外,使用函数文字定义"类"是否有任何好处,而不仅仅是函数定义:

var Class = function () {};
Run Code Online (Sandbox Code Playgroud)

VS

function Class () {};
Run Code Online (Sandbox Code Playgroud)

谢谢!

javascript oop prototype

293
推荐指数
3
解决办法
8万
查看次数

在构造函数和原型中声明javascript对象方法

在创建javascript对象时,我可以在构造函数或原型中放置方法声明.例如,假设我想要一个具有Name属性和Bark方法的Dog类.我可以将Bark方法的声明放入构造函数中:

var Dog = function(name) {
    this.Name = name;
    this.Bark = function() {
        alert(this.Name + " bark");
    };
}
Run Code Online (Sandbox Code Playgroud)

或者我可以作为原型对象的方法:

var Dog = function(name) {
    this.Name = name;
}

Dog.prototype.Bark = function() {
    alert(this.Name + " bark");
};
Run Code Online (Sandbox Code Playgroud)

当我实例化Dog类型的对象时,两种方法似乎都正常工作:

var dog = new Dog("Fido");
dog.Bark();  //Both approaches show "Fido bark"
Run Code Online (Sandbox Code Playgroud)

我应该更喜欢这些方法中的一种吗?使用一个优于另一个是否有任何优势?在幕后,这两种方法最终做了完全相同的事情吗?大多数人倾向于采用哪种方法?

谢谢您的帮助.

javascript oop

146
推荐指数
3
解决办法
7万
查看次数

标签 统计

javascript ×2

oop ×2

prototype ×1