admin管理员组文章数量:1327849
How to delete a function from constructor?
If there is a function called greet
in the Person
constructor, how do I remove the function?
function Person(name)
{
this.name = name;
this.greet = function greet()
{
alert("Hello, " + this.name + ".");
};
}
I want the result to be:
function Person(name)
{
this.name = name;
}
How to delete a function from constructor?
If there is a function called greet
in the Person
constructor, how do I remove the function?
function Person(name)
{
this.name = name;
this.greet = function greet()
{
alert("Hello, " + this.name + ".");
};
}
I want the result to be:
function Person(name)
{
this.name = name;
}
Share
edited May 14, 2012 at 20:44
Felix Kling
817k181 gold badges1.1k silver badges1.2k bronze badges
asked May 14, 2012 at 20:38
XP1XP1
7,1938 gold badges59 silver badges63 bronze badges
1
- 1 possible duplicate of How to remove a property from a javascript object – Felix Kling Commented May 14, 2012 at 20:45
2 Answers
Reset to default 6delete this.greet
or
var personInstance = new Person();
delete personInstance.greet // to remove it from the instance from the outside
or
delete Person.prototype.greet // if doing prototypes and inheritance
delete
is a keyword that your very rarely see but I assure you, it exists :P
You cannot change the source of a function. If you want to change that function's behaviour, you have to options:
Override the function with your own. This is easy if the function is standalone. Then you can really just define
function Person(name)
{
this.name = name;
}
after the original function was defined. But if prototypes and inheritance are involved, it can get tricky to get a reference to the original prototype (because of the way how function declarations are evaluated).
Ceate a wrapper function which creates and instance and removes the properties you don't want:
function PersonWrapper(name) {
var p = new Person(name);
delete p.greet;
return p;
}
This approach is also limited since you can only change what is accessible from the outside. In the example you provided it would be sufficient though.
本文标签: javascriptHow to delete a function from constructorStack Overflow
版权声明:本文标题:javascript - How to delete a function from constructor? - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1742219968a2435270.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论