javascript - 关于 Javascript 中函数对象作用域的快速介绍(我希望很简单!)...ode>

标签 javascript function object properties scope

各位程序员晚上好,提前感谢您的帮助/关注。

这是关于使用语句(而不是表达式)声明 JavaScript Function 对象并向其添加属性的内容。

如果这有效:(它确实有效!)

function Test(){
     alert( Test.Data );
}

// Define a property on the method.
Test.Data = "Method property";

// Execute the method.
Test();

那为什么这不起作用?

function Test(){
  var Data = "Method property";
  alert( Test.Data );
}

// Execute the method.
Test();

甚至这个?

function Test(){
  Data : "Method property";
  alert( Test.Data );
}

// Execute the method.
Test();

用英语:我不明白的是为什么你可以从外部而不是内部在函数对象中设置属性...我认为这与上下文有关,而函数对象如何不这样做存在,或者在我尝试设置内部属性时,对它的引用不在范围内...如果有人可以为我确认/否认/澄清,那就太好了。

谢谢。

詹姆斯

最佳答案

可以从函数对象内部设置属性。您的操作方式与外部操作完全一样:

function Test() {
    Test.Data = "Method property";
    alert(Test.Data);
}

您的问题与范围无关,而与理解设置对象属性的语法与创建局部变量的语法有关。

then why does this not work?

function Test(){
  var Data = "Method property";
  alert( Test.Data );
}

因为在这种情况下,Data 只是一个局部变量,而不是函数的属性,因此 Test.Data未定义

or even this?

function Test(){
  Data : "Method property";
  alert( Test.Data );
}

因为在这种情况下,Data 只是 a label 。同样,这与 Test 上设置的任何属性都没有关系。

关于javascript - 关于 Javascript 中函数对象作用域的快速介绍(我希望很简单!)...ode>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9087357/

相关文章:

java - 在java中使用数组创建对象

javascript - 如何使用多个键按对象的值对对象进行排序?

javascript - 如何按日期对 JSON 进行排序?

javascript - 使用 moment.js 如何将 moment 对象转换为分钟?

javascript - 修改对象会导致修改反射(reflect)在先前推送到数组的该对象的副本中

python - 我将如何迭代地编写这个递归函数?

c - 从函数内打开文件

javascript - 根据 Javascript 中的指令对列表进行排序

javascript - 加载数据时读取缓冲区

JavaScript 返回值第 2 部分