在jQuery闭包中,如何获取窗口属性描述符?

时间:2018-05-09 16:35:40

标签: javascript jquery

我想将window属性'otherName'描述符看成jQuery闭包。但     进入jQuery闭包'otherName'描述符显示未定义,我认为可能     是getOwnPropertyDescriptor()没有得到窗口对象。我对吗?如果我使用     这个代码在普通的js -

var otherName = "ckMe";
var result = Object.getOwnPropertyDescriptor(window, "otherName");
console.log(result); 
// Object { value: "ckMe", writable: true, enumerable: true, configurable: 
//false }

这很好。但是当这个代码在jQuery中时,我得到了结果=未定义。

(function ($) {
  $(window).on("load", function (event) {
    var otherName = "ckMe";
    var result = Object.getOwnPropertyDescriptor(window, "otherName");
    console.log(result);//undefined
  });
}(jQuery));

或者,如果我使用此代码相同的结果,未定义。

(function ($) {
  $(function () {
    var otherName = "ckMe";
    var result = Object.getOwnPropertyDescriptor(window, "otherName");
    console.log(result);//undefined
  });
}(jQuery));

我想在jQuery闭包中使用此代码,因为我的所有代码都在那里。一世 已经在谷歌搜索过这个问题,但没有得到最好的 解。请帮我。谢谢大家。 抱歉,如果我有什么不对劲。

1 个答案:

答案 0 :(得分:1)

在您的第二个代码块中,exec不是kubectl exec -it name-of-your-pod -- /bin/bash的属性。 otherName仅在全局范围内获取window声明的属性。在您的第二个两个代码块中,window声明不在全局范围内,因此var不是任何内容的属性¹,它只是一个局部变量。它们没有属性描述符,因为它们不是属性。

¹“不是任何属性” - 在规范术语中,局部变量是词法环境对象上的绑定。绑定有点像属性,但它们不是属性(在JavaScript的对象属性意义上),并且它们没有属性描述符(也不能直接访问Lexical Environment对象 - 事实上,它可能不会字面上存在于任何特定的JavaScript引擎中。

相关问题