从数组到对象
无功myarr = {红','蓝色','','purple};
myarr; / / 红 {
myarr { 0 }; / /红
myarr { 3 }; / /紫色
你对数组很熟悉。我们可以理解一个键对应的值,并且已经在阵中,这是已经默许了。(例如,上面的代码,其关键是红色、蓝色、价值,黄色,紫色)。
然后可以将对象理解为自定义键数组。
var英雄= {
品种:'turtle,
职业:忍者
};
上面的代码我们可以理解:
1个
名字。对象是英雄。
2。与数组不同取代的{ 'symbol{
The attributes of 3. 物体(如品种和职业)用符号,分隔。
4键和值的语法是键:值
还需要注意的是,无论
属性(或键)放在双引号、单引号或没有引号上,它们的结果
都是一样的。以下代码是相同的。
var obj = { 1,2 }:B;
var obj = {'a':1 B:2 };
var obj = { :1,B:2 };
推荐的写作方式不是将属性放入引号中,除非属性的名称是特殊符号,如数字或空格等。
这篇文章非常简单,重要的是要注意符号}定义的数组,而对象被定义为符号{ }
元素、属性、
方法 当我们
学习数组时,我们可以说数组包含元素,当涉及到对象时,我们可以改变
参数。
var动物{ {
名称:'dog,
运行:
函数(){
警报();
}
}
名称是属性(属性),运行本身是一个函数。在这个对象中,我们调用方法(方法)。
访问对象的属性
有两种方法访问对象的属性。
在数组的形式如:动物{ 'name' }
接入点:animal.name
第一个访问的方法适用于任何
情况。但如果属性是无效的,'1name'or'my名字命名的最后一部分是
错误的。这一点是要注意的。
下面是对象访问的一个示例
var图书{ {
名称:'javascript基础,
出版:机械。
作者:{
名:'nicholas,
姓:法的应用
}
};
1。得到作者对象FirstName属性
book.author.firstname / /尼古拉斯
2。得到作者对象的LastName属性,我们尝试用另一种方法
本书'author} { { 'lastname / /夏}
我们还可以使用混合访问
模式。
本书。作者{ 'lastname}或{ }书'author。姓都是有效的,要灵活运用
在动态属性的情况下,使用数组来访问对象。
VaR的关键= 'lastname
书。作者{键};
对象调用方法
var
品种:'turtle,
职业:忍者,
表示:函数(){
return'i是+ hero.occupation;
}
}
Hero.say();
访问对象的方法非常简单,有点在线,但它也可以用数组的方式看起来怪异。
如英雄{ }()';
不建议在访问对象时尽可能使用这种方法。
修改属性和方法
由于Javascript是一种动态
语言,所以可以随时修改对象的属性和方法。
var英雄};
英雄是一个空对象。
类型hero.breed; / /未定义
它表明英雄对象没有繁殖属性。
接下来,您可以添加属性和方法。
hero.breed = 'turtle;
hero.name = 'leonardo;
hero.sayname =函数(){ return的英雄的名字;};
调用方法
Hero.sayName(); / /列奥纳多
删除属性
删除hero.name; / /真的
(英雄。sayname); / /失败
这
var
名称:'rafaelo,
sayname:函数(){
返回this.name;
}
}
Hero.sayName(); / / rafaelo
这意味着对象的意义,以及关于这一点的复杂问题稍后讨论。
构造函数(构造函数)
创建对象的另一种方法是使用构造函数直接看到示例。
函数英雄(){
this.name = 'refaelo;
}
英雄=新英雄();
hero.name; / / refaelo
这种方法的优点是可以在创建对象时传入参数。
函数英雄(名称){
this.name =名称;
this.whoareyou =函数(){
返回this.name;
}
}
VaR HI =新的英雄('nicholas);
Hi.whoAreYou(); / /尼古拉斯
当你想注意的时候,不要失去新的
操作员。
全局对象
在过去的几天里,我们已经说过,全球变量已经提到。我们应该尽量避免使用全局变量。当我们学习对象时,我们在观察全局变量是关于什么的。实际上,全局变量是全局对象的属性。如果宿主环境是Web
浏览器,则全局变量是窗口。
如果我们定义var a = 1;
我们能理解:
全局变量a,
作为窗口的一个属性,我们可以称之为窗口,或窗口{'a' }
看看预定义函数parseInt('123 m);我们可以写window.parseint('123 m);
构造函数属性
设置对象之后,后台创建了一个隐藏的属性、构造函数。
h2.constructor; / /英雄(名字)
因为构造函数的属性是对函数的引用,如果不关心H2对象是什么创建的,只关心创建一个新对象和H2,可以使用以下写作
VaR H3 = h2.constructor('nicholas);
h3.name; / /尼古拉斯
让我们来看看下面的意思
var;
o.constructor; / /对象()
类型o.constructor; / /
功能 事实上,它隐藏了新对象(),更深层次的
应用程序稍后将解释几个
教程。
instanceof
运算符
是用来判断一个物体是由指定的构造函数创建。
函数英雄(){
}
新英雄();
var;
H是英雄; / /真的
H是对象; / /假
o实例对象; / /真的
注意,是不是后面的
参考功能如H是(英雄)书写错误; / /错误
函数返回对象
构造函数可以用来创建一个对象,或者一个对象可以通过一个普通函数返回到对象来创建一个对象。
函数工厂(名称){
返回{
名称:名称
};
}
用这种方法创建对象
var o =厂();
o.name
让我们来看一个返回到对象的相对少见的构造函数的例子。
函数C(){
这个= 1;
返回{ 2 };
}
新的C();
型C2。 / /未定义
C2 2;
它表明它不返回这个,而是返回到对象{ 2 },重点是注意这个。
传输对象
如果一个对象被传递给一个函数,那么这个转移就是一个引用。如果这个引用被改变了,原始对象将会被改变。
下面是一个对象赋值的例子
VaR原= { name: 'nicholas};
原始副本;
copy.name; / / 'nicholas;
copy.name =詹森';
original.name; / /詹森';
修改
复制的属性名也等于修改原始的属性名。
与传递给函数的对象相同。
函数修改(o){
o.name =詹森'
}
VaR原= { name: 'nicholas};
修改(原件);
original.name; / /杰森
比较的对象
两个对象的比较,如果是真的,是同一对象的引用。
Var Fido = {品种:'dog};
Var Benji = {品种:'dog};
石磊= = = / /假狗;
石磊= = / /假狗;
上面的代码不是同一个引用,所以都是错误的。