gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 23:22:14 28 4
gpt4 key购买 nike

我想在 jQuery 闭包中看到窗口属性“otherName”描述符。但 进入 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 中时,我得到了 result = undefined。

(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 闭包中使用这段代码,因为我的所有代码都在里面。我已经在谷歌上搜索过这个问题,但没有找到最好的解决方案。请帮我。谢谢大家。抱歉,如果我有任何问题。

最佳答案

在后两个代码块中,otherName 不是 window 的属性。 window 仅在全局范围内获取 var 声明的属性。在您的后两个代码块中, var 声明不在全局范围内,因此 otherName 不是任何属性¹,它只是一个局部变量。它们没有属性描述符,因为它们不是属性。


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

关于javascript - 在 jQuery 闭包中,如何获取窗口属性描述符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50258190/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com