微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是否可以仅在函数闭包内应用对象的原型?

如何解决是否可以仅在函数闭包内应用对象的原型?

|
function test(){
    String.prototype.to_selector=function(a){return \"#\"+a;}
    return \"asd\".to_selector();
}
我想要
\"asd\".to_selector();
功能之外不起作用。怎么做?还是有必要?     

解决方法

        
function test(){
    String.prototype.to_selector=function(a){return \"#\"+a;}
    var o = \"asd\".to_selector();
    delete String.prototype.to_selector;
    return o;
}
    ,        不,这是不可能的,在您的示例中,我说这并不是真的有用。为什么不使用:
function test(){
    var to_selector = function(a){return \"#\"+a;};
    return to_selector(\"asd\");
}
如果为本机对象分配原型方法(此处为
String
),则会为该对象的所有后续调用分配该方法。 您可以将方法直接分配给真正的
String
对象,但同样,我真的没有看到任何用例:
var test = function(a){
    var str = new String(a);
    str.to_selector = function(){return \"#\"+this;}
    return str.to_selector();
}
alert(test(\'asd\')); //=> \'#asd\'
alert(\'bla\'.to_selector()); //=> error
    ,        修改“ 4”原型是不可能的,因为这将修改执行此函数后创建的String的所有实例。 我认为没有必要为仅在特定功能范围内起作用的本机对象提供方法。用例是什么?您总是可以向method4ѭ对象添加静态方法,或者向
String
原型添加实例方法(请注意,这不是一种好习惯),只能在
test
内使用它。 尽管失去了直接从字符串声明中调用
to_selector
的优雅功能,但您也可以创建一个新对象以用于该目的:
var string2 = function(str) {
    this.str = str;
};

string2.prototype = {
    to_selector: function() {
        return \'#\' + this.str;
    },toString: function() {
        return this.str;
    }
};

function test(){
    asd = new string2(\"asd\");
    return asd.to_selector();
}
但是,我再也看不到这有什么方便。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?