如以下代码,构造函数Box,我已经对他实例化了,为什么box.run()还是无法访问???
function Box (){
var age = 23;
function run (){
return "运行中。。。"
}
}
var box = new Box();
alert(Box.run()); //无法访问
alert(box.run()); //无法访问
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
首先,Box.run() 显然是错误的,因为
run并不是Box的 attribute,所以你不能用.来访问。而关于
box.run()就涉及到 constructor 的具体工作方式。当你用new Box()去创建一个对象时:Box()函数创建了一个对象,并让该对象连接到Box()函数的prototype属性;Box()函数的this被绑定到这个新创建的对象。所以,当你得到了这个新建的
box对象时,你定义的run()函数并不是这个对象的 attribute,所以当然不能调用。用this.run = function() {...}去赋值时,这个 function 是run的值,而run又是this的一个 attribute,所以就能够访问了。首先对于你的这个问题,因为你的Box()只是一个函数,而run()只是Box()的一个私有函数,私有函数只能在函数内部调用即Box()内部调用,在Box()外部,不能够调用run()这个函数方法。
你这样试试,你应该是使用构造函数的方法创建对象的话可以这样调用
但是即使是构造一个对象
也不能这样直接使用,因为函数对象只能实例化之后才可以调用里边儿的方法属性
也可以在函数后面加上
js中的构造函数是调用的this来定义它本身的量的