由此设置的Javascript对象中的变量

时间:2018-06-15 06:02:54

标签: javascript

我最近遇到了一些Javascript,其中一个变量正在一个方法中设置。除this以外,它永远不会被宣布。以下是 very 简化示例:

'use strict'
var object = {
    property1: 'value',
    method: function() {
        this.variable = this.property1;
    },
}

object.method();

this.variable在其他方法的整个对象中使用,但永远不会使用varlet声明,而且它不是object[key]

以这种方式传递变量是否有任何风险?

2 个答案:

答案 0 :(得分:1)

以这种方式传递变量没有风险,除非你先运行object.method()。如果没有这样做,object.variable将返回undefined。 在这里你可以这样检查:



var object = {
    property1: 'value',
    method: function() {
        this.variable = this.property1;
    },
}

console.log(object.variable);
object.method();
console.log(object.variable);




console.log(object.variable);在object.method()之前调用的;将打印undefined。 您的代码也可以如下编写,它的行为也相同:



var object = {
    property1: 'value',
    method: function() {
        object['variable'] = this.property1;
    },
}

object.method();
console.log(object.variable);




答案 1 :(得分:0)

当您致电object.method();时,它会将新属性variableobject原型相关联,当您执行object['variable']时,它会返回您的值,因此它不会必须在设置值之前声明variable。您可以使用object[key]访问它。因此,使用这种方式没有风险。

var object = {
    property1: 'value',
    method: function() {
        this.variable = this.property1;
    },
}

object.method();
console.log(object['variable']);