我正在寻找一种奇妙的方式来防止闭合继承周围的scrope。例如:
let foo = function(t){
let x = 'y';
t.bar = function(){
console.log(x); // => 'y'
});
};
我知道只有 两种方法可以 防止共享范围:
(1)使用阴影变量:
let foo = function(t){
let x = 'y';
t.bar = function(x){
console.log(x); // => '?'
});
};
(2)将函数体放在其他位置:
let foo = function(t){
let x = 'y';
t.bar = createBar();
};
我的问题是-有人知道防止闭包继承JS范围的第三种方法吗?花哨的东西很好。
我认为唯一可行的方法是vm.runInThisContext()
在Node.js中。
让我们利用想象力来思考一下,并假设JS有一个private关键字,这意味着变量仅在该函数的作用域内是私有的,如下所示:
let foo = function(t){
private let x = 'y'; // "private" means inaccessible to enclosed functions
t.bar = function(){
console.log(x); // => undefined
});
};
和IIFE将不起作用:
let foo = function(t){
(function() {
let x = 'y';
}());
console.log(x); // undefined (or error will be thrown)
// I want x defined here
t.bar = function(){
// but I do not want x defined here
console.log(x);
}
return t;
};
此技术有效:
创建帮助函数以在隔离的范围内运行函数
const foo = 3;
it.cb(isolated(h => {
console.log(foo); // this will throw "ReferenceError: foo is not defined"
h.ctn();
}));
您可能还对JavaScript with
运算符有些运气
问题内容: 如果我们运行派生类,它将打印派生类和父类。是否有任何方法可以防止静态块的继承? // Class 1 // Class2 基本上我在父类中有一些方法要继承,但不希望实例化派生类时发生在父静态块中的处理。有没有办法做到这一点,否则我将不得不复制代码? 问题答案: 没有。 你不能这样做 。 静态的initialzier块不会被继承。 由于基类扩展了超类,因此在加载类时将执行静态块,即使超类
问题内容: 我的侧边栏中有一个使用嵌套列表( 和 标记)的分层导航菜单。我使用的预制主题已经具有列表项的样式,但是我想更改顶级项的样式,但不能将其应用于子项。是否有一种简单的方法可以将样式应用于顶级列表项标签,而无需将样式层叠到其子级列表项?我知道我可以在子项目中显式添加重写样式,但是如果有一种简单的方法,只是说“将这些样式应用于此类并且不要级联,我真的很想避免必须重复所有样式代码”他们将其归
我有几个配置文件,比如: application.yaml 我想我需要一些定制属性spring Binder.class定制,但我找不到任何解决方案。 提前感谢!
本文向大家介绍javascript关于继承的用法汇总,包括了javascript关于继承的用法汇总的使用技巧和注意事项,需要的朋友参考一下 本文实例汇总了javascript关于继承的用法。分享给大家供大家参考。具体如下: 例子: 再看例子 一、用function实现: 或者同等效力的: 由于这只是将this作为参数,调用父类Person的构造函数,把赋予父类的所有域赋予Author子类,所以任何
我有一个主(屏幕)gui窗口,需要打开几个“多输入”窗口(jdialog或当不可能使用jframe时),例如添加首选项(4个文本字段,带有2个文件选择器和2个单选按钮)。在这些JDialogs(或JFrames)中按OK/Cancel时,我的整个应用程序将关闭。我不想那样。我该怎么防止呢? 第一次尝试:我尝试了intelliJ选项“新- 第二次尝试:我“手工”编写了一个类,创建了一个JDialog
本文向大家介绍JavaScript中的继承之类继承,包括了JavaScript中的继承之类继承的使用技巧和注意事项,需要的朋友参考一下 继承简介 在JS中继承是一个非常复杂的话题,比其他任何面向对象语言中的继承都复杂得多。在大多数其他面向对象语言中,继承一个类只需使用一个关键字即可。在JS中想要达到继承公用成员的目的,需要采取一系列措施。JS属于原型式继承,得益于这种灵活性,我们既可以