我在使用标记
引用的单独文件中包含以下代码function _TEST()
{
var val;
this.get = function(x)
{
return val;
}
this.prop = 'testing';
this.set = function(x)
{
val = x
return val;
}
this.exp = function(x)
{
function meth(x)
{
return 'I am a private '+x;
}
return meth(x);
}
}
现在在主页的头部我有
var tst = new _TEST();
window.onload = function()
{
tst.set('Hello')
alert(tst.get());
var tst2 = Object.create(_TEST.prototype);
tst2.prop = "testing"; // the only property that shows up for tst2 below
var str = '';
for(var x in tst)
{
str += x+" : "+tst[x]+"\n";
}
str += "\n\ntst2:\n"
for(var x in tst2)
{
str += x+" : "+tst2[x]+"\n";
}
alert(str)
}
来自警报的调用输出是:
get : function (x) {
return val;
}
prop : testing
set : function (x) {
val = x;
return val;
}
exp : function (x) {
function meth(x) {
return "I am a private " + x;
}
return meth(x);
}
tst2:
prop : testing
据我了解,Object.create假设创建一个继承自原型的对象instande。 但是tst2没有那些。我在这做错了什么? 这是在Mac OSX上的Firefox 12.0中测试的,我不确定它使用的是哪个版本的javascript。我是 使用O'Reillies Javascript:权威指南(rhino book)来增加我对象和相关的知识 代码
编辑: 我弄清楚了:
适用于
var tst2 = Object.create(tst);
答案 0 :(得分:0)
您的代码尚未向_TEST.prototype
添加任何属性。 _TEST
函数将属性直接添加到进行new _TEST()
调用时创建的每个实例。这与原型无关。