Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 语法错误(声明“class”变量)_Javascript - Fatal编程技术网

Javascript 语法错误(声明“class”变量)

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

我从未用下面的语法编写过javascript。我想做的只是在函数“showUrlLink”之外声明一个变量,正确的方法是什么

//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
。这是当前答案中最干净的方法,尽管对新手来说可能是最难理解的。谢谢,这就是为什么我在最后添加了链接-也许有人会学到一些新东西:)