类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

javascript封装问题



代码很简单,如果把prototype写在Dialog类外,运行没有问题,但是我想把prototype也写在Dialog类里,运行时就提示找不到init方法,这是为什么呢?
我有更好的答案
邀请更新
2013-08-30 10:49 最佳答案
}
中的Dialog是对象构造函数的引用
如果你放到里面的话,没有定义完Dialog的构造函数function Dialog(){
}
是对象构造函数
Dialog...prototype = {
追问
按您的意思,就是不能把语句一起写在Dialog里?
追答
肯定不能啊
要先定义才能引用

function Dialog(){
}
Dialog.prototype = {
...
}
追问
function Dialog(a, b) {
this.a = a;
this.b = b;
function aa() {
}

}
Dialog.prototype={
aa = function() {
},

init = function() {
//那我如何调用AA函数

}

}
晕了~~非常感谢您的回复~先谢谢了~

aa136244249

采纳率:42% 擅长: JavaScript PHP JAVA相关

其他回答

prototype = {
init;
b,
但可以写成下面这样.init();
你这样写就不会出错了,但这样会有一个问题:function(){
console.log("ok");
}
},每次你new 都会改写 Dialog的原型,这是不希望看到的,上面的代码 b instanceof Dialog 返回的结果为 false ,这样写显然有问题:
var Dialog = (function(){
function Dialog(){};

Dialog.prototype = {
init;

return Dialogfunction Dialog(){
Dialog:function(){
console.log("ok");
}
}
}

var a = new Dialog();
var b = new Dialog()
追问
这个和上面的有什么区别呢?
结果明显一样的啊
追答
结果一样?表达清楚你的意思
追问
嗯嗯,不好意思~刚刚是我自己弄错
这样封装很不错,封装后代码也比较清楚
只是刚运行时加了调用其他函数的语句,就又出错了
颜海镜 | 发布于2013-08-30 12:23
评论
function Dialog(){
    this.init = function(){
        console.log('ok');
    }
    this.add = function(){
        console.log('add');
    }
}
var d = new Dialog();
d.init();

或将Dialog.prototype写在Dialog外

lyz810 | 前端开发工程师 | 发布于2013-08-30 10:31
评论
JS中的prototype属性,是用来返回对象类型原型的引用。
gujianjing8 | 发布于2013-08-30 12:38
评论
收起 其他1条回答

为您推荐: