Javascript 语法错误(声明“class”变量)
我从未用下面的语法编写过javascript。我想做的只是在函数“showUrlLink”之外声明一个变量,正确的方法是什么Javascript 语法错误(声明“class”变量),javascript,Javascript,我从未用下面的语法编写过javascript。我想做的只是在函数“showUrlLink”之外声明一个变量,正确的方法是什么 //File test.js var Test = { //Declare variable here to be used in showUrlLink var test = "something";//This gives syntax error
//File test.js
var Test =
{
//Declare variable here to be used in showUrlLink
var test = "something";//This gives syntax error
showUrlLink: function() {
if (test === "something") {
//Do something
}
}
};
提前感谢。只需将其作为属性添加到对象中即可
var Test ={
test : "something",
showUrlLink: function() {
if (this.test === "something") {
//Do something
}
}
};
它是一个文本,因此您可以使用一个属性,或者在
Test
变量之前声明变量。不能在需要属性的文本中声明变量
var Test = {
test : "something",
showUrlLink: function() {
if ( this.test === "something") {
//Do something
}
}
};
如果要在
Test
对象的范围内声明一些内部变量,但只返回“public interface”,则应将其包装在函数中:
var Test = (function(){
//Declare variable here to be used in showUrlLink
var test = "something";
return {
showUrlLink: function() {
if (test === "something") {
console.log( test );
}
}
}
}());
现在可以执行Test.showUrlLink()
,但不能更改Test.Test
变量,因为它保存在闭包中,无法从外部范围访问
另请参见:这取决于您不想如何制作/使用它
最简单的修复方法(但可能不是最好的,因为您应该避免定义全局变量)是移动var test=“something”代码>对象声明之外的声明:
// Defined before the Object below, so it works correctly
var test = "something";
var Test = {
showUrlLink: function () {
if (test === "something") {
//Do something
console.log("test is: " + test);
}
}
};
Test.showUrlLink(); // test is: something
或者,您可以将test
定义为对象本身的属性。见下面的例子
使用JavaScript对象:
var Test = {
test: "something",
showUrlLink: function () {
if (this.test === "something") {
//Do something
console.log("this.test is: " + this.test);
}
}
};
Test.showUrlLink(); // this.test is: something
/**
* Class definition
*
*/
var Test = function () {
this.test = "something";
};
/**
* Method for showing showUrlLink
*
*/
Test.prototype.showUrlLink = function () {
if (this.test === "something") {
//Do something
console.log("this.test is: " + this.test);
}
};
// How to use the Class
var test1 = new Test();
test1.showUrlLink(); // this.test is: something
var test2 = new Test();
test2.showUrlLink(); // this.test is: something
最后,您可以使用JavaScript类而不是对象
使用JavaScript类:
var Test = {
test: "something",
showUrlLink: function () {
if (this.test === "something") {
//Do something
console.log("this.test is: " + this.test);
}
}
};
Test.showUrlLink(); // this.test is: something
/**
* Class definition
*
*/
var Test = function () {
this.test = "something";
};
/**
* Method for showing showUrlLink
*
*/
Test.prototype.showUrlLink = function () {
if (this.test === "something") {
//Do something
console.log("this.test is: " + this.test);
}
};
// How to use the Class
var test1 = new Test();
test1.showUrlLink(); // this.test is: something
var test2 = new Test();
test2.showUrlLink(); // this.test is: something
总而言之,我通常更喜欢类而不是对象,但前提是我发现自己在一个对象中定义了多个函数。此外,类允许您创建多个实例
最后,JavaScript实际上没有“类”,但人们(像我一样)用它们来表示类,而不是构造函数。更多关于它的信息
干杯。测试中的showUrlLink
是未定义的。您应该使用this.test
添加属性test:“something”
而不是var test=“something”
也可以使用这个。test
而不是test
。这是当前答案中最干净的方法,尽管对新手来说可能是最难理解的。谢谢,这就是为什么我在最后添加了链接-也许有人会学到一些新东西:)