所以我是javascript的新手(来自强大的java背景),我想知道在类或构造函数中定义属性或变量的正确方法。
function RootNode(sTitle, authName, storyNum){
this.sTitle = sTitle;
this.authName = authName;
this.storyNum = storyNum;
this.creationDate = new Date();
}
或
function RootNode(sTitle, authName, storyNum){
var sTitle = sTitle;
var authName = authName;
var storyNum = storyNum;
var creationDate = new Date();
}
答案 0 :(得分:3)
简单回答:使用第一个
更详细的回答
第一个代码段设置了对象上的sTitle
,authName
,storyNum
和creationDate
属性。
第二个片段创建了4个局部变量并设置了它们的值。这些变量无法从函数外部访问。
您可以像这样使用局部变量和对象变量:
function RootNode(sTitle, authName, storyNum) {
this.sTitle = sTitle; // you can access this variable when you . into the object
var privateVariable = 'You cannot see this variable when you . into the object directly';
this.methodInObject = function() {
return privateVariable; // but you can access the variable from the function
}
}
注意: 您可能希望在构造函数的末尾添加return this;
,以便它返回您构造的对象。
更新: 根据评论,不必须return this;
使用new RootNode
自动执行此操作(+1自动使用?:))
进一步阅读
答案 1 :(得分:0)
您可以使用第一种风格,但我个人更喜欢这种风格:http://www.w3schools.com/js/js_objects.asp
答案 2 :(得分:0)
第一种方法是正确的。
function RootNode(sTitle, authName, storyNum) {
this.sTitle = sTitle;
this.authName = authName;
this.storyNum = storyNum;
this.creationDate = new Date();
}
然而,这种方法并不像一个类,它更像是一个独特的对象。以这种方式定义对象更像是Java类。
function RootNode(sTitle, authName, storyNum) {
//your constructor
this.sTitle = sTitle;
this.authName = authName;
this.storyNum = storyNum;
this.creationDate = new Date();
}
RootNode.prototype.myMethod = function() {
//my code
}
此模式非常有用,因为它允许多个实例化而无需复制属性的内存。此外,如果要创建子类,还需要它。阅读this以了解原型和构造函数属性