有什么区别
var A = function () {
this.x = function () {
//do something
};
};
Run Code Online (Sandbox Code Playgroud)
和
var A = function () { };
A.prototype.x = function () {
//do something
};
Run Code Online (Sandbox Code Playgroud) 我想知道使用这些中的任何一个是否有任何优势,我应该走哪条路?
构造方法:
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)
谢谢!
通常,我已经看到在类定义之外声明的原型函数,如下所示:
function Container(param) {
this.member = param;
}
Container.prototype.stamp = function (string) {
return this.member + string;
}
var container1 = new Container('A');
alert(container1.member);
alert(container1.stamp('X'));
Run Code Online (Sandbox Code Playgroud)
此代码生成两个值为"A"和"AX"的警报.
我想定义类定义的原型函数INSIDE.做这样的事情有什么不对吗?
function Container(param) {
this.member = param;
if (!Container.prototype.stamp) {
Container.prototype.stamp = function() {
return this.member + string;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试这样,以便我可以访问类中的私有变量.但是我发现如果我的原型函数引用了私有var,那么private var的值总是初始化函数初始化时使用的值,而不是对象实例中的值:
Container = function(param) {
this.member = param;
var privateVar = param;
if (!Container.prototype.stamp) {
Container.prototype.stamp = function(string) {
return privateVar + this.member + string;
}
}
}
var container1 = new …Run Code Online (Sandbox Code Playgroud)