function foo()
{
var a=5;
}
由于上面的函数是JavaScript对象,所以我们可以像foo.p=6
一样向它添加属性。但是在执行console.log(foo)
时,我无法看到对象的p
属性,但可以通过foo.p
和foo [' p']。
如果我们将foo视为JavaScript对象,我也无法访问foo.a
。
答案 0 :(得分:2)
请尝试使用console.dir(foo);
,其中列出了对象的属性。 concole.log
只是输出值的一些表示,浏览器认为这将是有用的。
foo.a
无法正常工作。 a
是本地变量,不是属性,仅在执行foo
时存在。
答案 1 :(得分:2)
记录对象时,浏览器将选择如何在控制台中呈现它。这可能与在其上调用.toString()
一样原始,或者像让您能够导航其属性一样复杂。
此外,控制台不是标准配置。浏览器可以实现它,但是为了方便起见,它们将保持一种共同的风格。但最终,这意味着它们会有所不同。
Internet Explorer:
谷歌浏览器:
请注意我必须使用console.dir()
强制Chrome为我提供对象的可导航视图,而不是简单的.toString()
表示。
答案 2 :(得分:0)
""是一个局部变量,这不能从函数外部访问。
你喜欢这样的事情:
var myClass = function(){
this.foo = 'bar';
}
var myInstance = myClass();
myInstance.foo // 'bar'
或作为普通对象:
var myObj = {
foo: 'bar'
}
myObj.foo // 'bar'
myObj.foo = 123;
myObj.foo // 123
答案 3 :(得分:0)
实现这一目标的方法很少。一种是在Javascript中使用对象,另一种是使用名为“模块模式”的对象。 对于使用对象,您可以执行以下操作:
function MyObject() {
this.foo = "myObj";
}
var mo = new MyObject();
console.log(mo.foo); //Will print "myObj".
模块模式的工作原理如下:
var MP = (function(){}(
var foo = "MP";
return {
foo : foo
}
));
console.log(MP.foo); // Will print "MP"