我在很多JavaScript介绍中都经常阅读这篇文章.我只是不明白.我总是将对象视为具有方法和属性的东西.我理解的数组,因为它具有键值对."字符串"或"数字"或"功能"怎么样?上面列出的这些东西对我来说似乎都很像.这意味着你输入一些东西,你会得到一些东西.你没有真正获得访问属性或任何东西.数组或"对象"列表中没有使用点符号.
是否有人使用点符号编写每个示例的一些示例,其方法和属性正在被访问?我怀疑对象的定义可能有限,因为我开始学习JavaScript ...
是否有可能在创建函数变量后,您实际上可以为它分配属性,就像它是常规对象一样?这就是我做的:
var example = function(a, b){
console.log(a, b);
}
example.someProperty = 'hi there';
Run Code Online (Sandbox Code Playgroud)
然后我在浏览器控制台中输入这些行:
example('Hello', 'world') // Hello world
example.someProperty // hi there
Run Code Online (Sandbox Code Playgroud)
所以现在基本上'example'var作为一个函数和一个对象同时作用.这为我提出了一些问题,其中一个是为什么,另一个是 - 有一种方法可以通过创建一个对象文字来做到这一点,因为我无法想到这样的方式.
我的问题是关于javascript中的函数和对象.我有三个问题源于彼此.在下面的例子中,我尝试在测试中访问'a'的值,但是我得到了未定义.但我创建了一个新的测试对象,然后我可以访问'a'值并更改它.
//create a function called test
var test=function() {
this.a=2
this.b=3 };
test.a//undefined
//create a object called test1 using 'new'
test1 = new test();
test1.a//2
//change the value of a in test1
test1.a=4
test1 //Object { a=4, b=3}
Run Code Online (Sandbox Code Playgroud)
在试图找到为什么会发生这种情况时,我遇到了这个javascript函数是对象吗?另外一个问题突然出现了.该SO问题的公认解决方案如下
var addn = function func(a) {
return func.n + a;
};
addn['n'] = 3;
addn(3);
Run Code Online (Sandbox Code Playgroud)
我将'func.n'更改为'this',它不再有效
var addn=function func(a) {
return this.n+a;
};
addn['n']=3;
addn(3); //NaN
Run Code Online (Sandbox Code Playgroud)
用'this'制作匿名函数也没有用
//anonymous function
var addn=function(a) {
return this.n+a;
};
addn['n']=3;
addn(3); //NaN
Run Code Online (Sandbox Code Playgroud)
为什么使用'this'不起作用? …