如何从构造函数中删除函数
How to delete a function from constructor?
如何从构造函数中删除函数?
如果Person
构造函数中有一个名为 greet
的函数,如何删除该函数?
function Person(name)
{
this.name = name;
this.greet = function greet()
{
alert("Hello, " + this.name + ".");
};
}
我希望结果是:
function Person(name)
{
this.name = name;
}
delete this.greet
或
var personInstance = new Person();
delete personInstance.greet // to remove it from the instance from the outside
或
delete Person.prototype.greet // if doing prototypes and inheritance
delete
是一个你很少看到的关键词,但我向你保证,它存在于:P
您无法更改函数的源代码。如果要更改该函数的行为,则必须选择:
用自己的函数覆盖该函数。如果函数是独立的,这很容易。然后你真的可以定义
function Person(name)
{
this.name = name;
}
在定义原始函数之后。但是,如果涉及原型和继承,则获取对原始原型的引用可能会变得棘手(因为函数声明的计算方式)。
Ceate 一个包装函数,该函数创建、实例化并删除您不需要的属性:
function PersonWrapper(name) {
var p = new Person(name);
delete p.greet;
return p;
}
这种方法也很有限,因为您只能更改从外部访问的内容。在您提供的示例中,它就足够了。
相关文章:
- 使用删除函数.这不起作用
- Javascript minifier删除函数
- 无法访问要传递给删除函数的正确 Firebase 项键
- KNOCKOUTJS 映射插件从对象中删除函数
- 如何从匿名函数中删除函数的属性
- 如何在 PopConconfirm 中单击按钮 yes 时调用在 Angular 控制器中声明的删除函数
- 二叉搜索树 JavaScript 实现 - 删除函数
- JavaScript 删除函数无效
- jQuery:在特定窗口大小中添加或删除函数
- 如何从构造函数中删除函数
- Javascript - 从输入标签中删除函数
- 在更改状态 AngularJS 时删除函数
- 删除函数原型对象
- 可以't删除函数的映射部分
- 通过函数引用删除函数中的所有事件侦听器
- 删除函数内参数后面的对象
- 获取Closure / Plovr以从始终为false的if中删除函数
- 删除函数中的子DOM元素
- 改进JS重复数据删除函数的性能
- 如何从调用堆栈中删除函数并并行运行它