0
var s = "Hi";

Date.now = function (){
    return new Date();
}

s.createdOn = function (){
    return new Date();
}

alert(s.createdOn()); // This is not working
alert(Date.now()); // This works fine

私は何らかの規則に違反していますか。Date クラスには新しいプロパティを追加できますが、文字列クラスには追加できないためです。なぜ?

4

2 に答える 2

4

プロパティまたはメソッドを文字列リテラルに追加できない理由は、リテラルのプロパティまたはメソッドにアクセスしようとすると、Javascript インタープリターが一時的に文字列の値を新しいオブジェクトにコピーしてから、そのオブジェクトのプロパティまたはメソッドを使用するためです。つまり、文字列リテラルは、文字列の既定のプロパティまたはメソッド、およびプロトタイプとして追加されたものにのみアクセスできます。

詳細は、次のリンクから入手できます。

http://www.hunlock.com/blogs/The_Complete_Javascript_Strings_Reference

これがあなたを助けることを願っています


于 2012-04-14T07:34:20.177 に答える
1

交換:

var s = "Hi";

var s = {};
于 2012-04-14T07:35:08.063 に答える