js访问原型的问题 var tfn = function () { tfn.prototype = { a: "aaaaaaaaa", b: "bbbbbbbb" } }请问如何访问tfn里的a??以下方式都不行。1、tfn.prototype.a 结果为undefined2、var c=tfn.prototype; c.a 结果为undefined3、var c=new tfn(); c.a 结果为undefined 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 var tfn = function () { tfn.prototype = { a: "aaaaaaaaa", b: "bbbbbbbb" } }如果有实例化的代码 var c=new tfn();那么每次实例化一个对象,都会去改变tfn的prototype,你想干嘛?给你个参考 function tfn() {} //定义这个函数,最好不要用 var tfn=function (){} 这两种方式还是有区别的.(function(){ //闭一下包,不闭也行 tfn.prototype = { a: "aaaaaaaaa", b: "bbbbbbbb" } }})(); function tfn() {} //定义这个函数,最好不要用 var tfn=function (){} 这两种方式还是有区别的.(function(){ //闭一下包,不闭也行 tfn.prototype = { a: "aaaaaaaaa", b: "bbbbbbbb" }; //} 不小心多了个括号....})();var c=new tfn();alert(c.a); 将prototype的赋值放在function的里面,都没执行function,赋值怎么能赋上呢? var tfn=new Function(); tfn.prototype = { a: "aaaaaaaaa", b: "bbbbbbbb" };var c=new tfn();alert(c.a); 5楼正解,为啥要放到function里面。 可以访问到是没有问题的 但是我不认同楼主的写法 当然我可能不了解楼主的想法是神马1、先说基于你的代码如何实现你的要求var tfn = function () { tfn.prototype = { a: "aaaaaaaaa", b: "bbbbbbbb" } }tfn();var newProto = new tfn();alert(newProto.a)2、个人意见 楼主的代码中 只要执行过这个函数 其原型就会发生改变 有什么特殊用法非要让楼主这样更改原型链么? var tfn = function () { tfn.prototype.a = "aaaaaaaaa"; }var newProto = new tfn();alert(newProto.a)那为什么这样就行呢? 在此之前,从没见过这样写的!!!var tfn = function () { tfn.prototype = { a: "aaaaaaaaa", b: "bbbbbbbb" } }只是定义一个变量 tfn. 没有调用。当然结果是 undefined程序逻辑最基本的3点1、顺序2、条件3、循环 你这样new的时候 只是去改变了tfn的原型上的a属性 并没有对原型进行修改 所以你的原型上经过修改后是有a属性的 能访问到是必然的 var tfn = function () { tfn.prototype = { a: "aaaaaaaaa", b: "bbbbbbbb" } }而这种写法 你new的时候 把原型给改了 所以要想访问到a 要再new一次 换句话说 也要new两次才能够访问到a属性和b属性 分享一个Canvas绘图的代码 Google Maps JavaScript API V3 不能显示 为什么内容在页面没有显示 一个巨菜的问题。。有分,麻烦大家了 请教jquery ui- dialog问题,涉及浏览器兼容问题 我想给超链接加参数,用以下方法不行,不知问题出在哪里 浏览服务器上PDF文件,不是IE直接打开。 提交表单问题! 欢迎CSDN的朋友! javascript中的innerHtml会对输入的值进行格式化,如何禁止它格式化html呢? JS获取IE的外部高度和宽度 我想连接新浪视频 有没有屏蔽广告代码?
var tfn = function () {
tfn.prototype = {
a: "aaaaaaaaa",
b: "bbbbbbbb"
}
}如果有实例化的代码 var c=new tfn();
那么每次实例化一个对象,都会去改变tfn的prototype,你想干嘛?给你个参考 function tfn() {} //定义这个函数,最好不要用 var tfn=function (){} 这两种方式还是有区别的.
(function(){ //闭一下包,不闭也行
tfn.prototype = {
a: "aaaaaaaaa",
b: "bbbbbbbb"
}
}
})();
(function(){ //闭一下包,不闭也行
tfn.prototype = {
a: "aaaaaaaaa",
b: "bbbbbbbb"
};
//} 不小心多了个括号....
})();
var c=new tfn();
alert(c.a);
var tfn=new Function();
tfn.prototype = {
a: "aaaaaaaaa",
b: "bbbbbbbb"
};
var c=new tfn();
alert(c.a);
1、先说基于你的代码如何实现你的要求
var tfn = function () {
tfn.prototype = {
a: "aaaaaaaaa",
b: "bbbbbbbb"
}
}tfn();
var newProto = new tfn();
alert(newProto.a)
2、个人意见
楼主的代码中 只要执行过这个函数 其原型就会发生改变 有什么特殊用法非要让楼主这样更改原型链么?
var tfn = function () {
tfn.prototype.a = "aaaaaaaaa";
}var newProto = new tfn();
alert(newProto.a)那为什么这样就行呢?
tfn.prototype = {
a: "aaaaaaaaa",
b: "bbbbbbbb"
}
}
只是定义一个变量 tfn. 没有调用。当然结果是 undefined程序逻辑最基本的3点1、顺序
2、条件
3、循环
tfn.prototype = {
a: "aaaaaaaaa",
b: "bbbbbbbb"
}
}而这种写法 你new的时候 把原型给改了 所以要想访问到a 要再new一次
换句话说 也要new两次才能够访问到a属性和b属性