JavaScript关于对象的分享
目录
1、对象的含义 |
8、构造器函数(可以用new操作符创建为对象) |
2、对象的属性也可以是函数 |
9、全局对象概念(包括全局变量) |
3、数组在JavaScript里使用小经验 |
10、instanceof 操作符(测试对象操作符) |
4、访问对象的属性 |
11、返回对象的函数 |
5、调用对象的方法 |
12、传递对象 |
6、新增删除对象的属性与方法 |
13、比较对象 |
7、this值 |
14、内建对象***(重点) |
1、对象的含义
【含义】JavaScript对象跟数组类似,区别它的键值类型是自定义的,并索引方式不再局限于数字,
对象所使用的括号是{}
实例:
var hero = { //用于表示该对象的变量明白
‘float’: 'hello', //如果属性名为保留字的话,加引号
occupation : 'world'
};
2、对象的属性也可以是函数
实例:
var dog= {
name : 'yzy',
talk : function(){ //匿名函数
alert("我爱吃辣条!!!");
}
};
3、数组在JavaScript里使用小经验
在数组中存储一些函数元素并在需要的时候调用它
var a = [];
a[0] = function(what){ alert(whart); };
a[0] ('Boo!');
一般性数组:也叫做索引型数组或者枚举型数组(通常以数字为键名)
关系性数组:也叫做哈希表或者字典(通常以字符串为键值)
4、访问对象的属性
var hero = {
yzy : {
haha : '你好'
}
}
(1)括号表示法 (可以连续性的使用)
实例: hero['yzy']['haha'];
(2)点号表示法 (可以连续性的使用)
实例:hero.yzy.haha;
【若属性不存在,返回undefined】
5、调用对象的方法
用点号表示法或中括号表示法均可,在指定的方法名后面加个()就可以了
例子:>var hero = {
breed:'Turtle',
occupation:'Ninja',
say:function(){ //对象里的方法
return 'I am' + hero.breed;
}
};
>hero.say(); //或 hero[say](); //若调用方法时要传参, hero.say('a','b','c');
"I am Turtle "
6、新增删除对象的属性与方法
例子:
//创建一个空对象
> var hero = {};
>typeof hero.name;
"undefined"
//新增对象的属性和方法
> hero.name = 'YZY';
> hero.age = '18';
> hero.sayAge = function(){ return hero.age;};
> hero.sayAge();
"18"
//删除对象中的方法或属性
>delete hero.age ;
true
> hero.sayAge();
"undefined"
7、this值
当在某个对象方法内部,访问同一对象的属性的时候,可以使用this
例子:
> var hero = {
name : 'yzy',
sayName : function(){
return this.name;
}
}
8、构造器函数(可以用new操作符创建为对象)
注:函数可以当做一个数据,赋给一个变量
例子:
//函数
>function Hero(){
this.name = 'yzy'; //使用this,创建全局变量(同时也是全局对象的一个属性)
}
//用该函数创建对象
>var hero = new Hero();
>hero.name;
"yzy"
9、全局对象概念(包括全局变量)
程序所在宿主环境一般都会为其提供一个全局对象,所谓的全局变量其实都只不过是该变量的属性罢了。
例如:
当宿主环境是Web浏览器时,它提供的全局对象就是window。
例子 : > var a = 1; //创建一个全局变量
> this.a;
1
>window.a;
1
10、instanceof 操作符(测试对象操作符)
用处:测试一个对象是不是由某个指定的构造器函数所创造的
例子:
>function Hero(){}
>var h = new Hero();
>var o = {};
>h instanceof Hero; //注意:该函数后面没有加括号,因为这不是函数调用,只需引用该函数的名字既可
true
>h instanceof Object;
true
>o instanceof Objict;
true
11、返回对象的函数
>function factory(name){
return {
name:name //返回对象的函数
};
}
>var yzy = factory('one');
>yzy.name;
"one"
12、传递对象
若把对象赋给另一变量,并且对该变量做一些改变操作的话,原对象也会跟着被改变
>var original = {howmany :1}
>var mycopy = original;
>mycopy.howmany;
1
>mycopy.howmany = 100;
100
>original.howmany; //传递
100
13、比较对象
>var fido = {dog : 'yzy'};
>var benji = {dog : 'yzy'};
>fido === benji; //如果不同的对象,碰巧有相同的属性和方法,比较操作也会返回flase
flase
>var mydog = benji;
>mydog === benji; //这种情况下,所指对象是相同的,因为对象的传递
true
>mydog === fido;
flase
14、内建对象
内建对象分为三类:
1、数据封装类对象 (1)Object、(2)Array、(3)Boolean、(4)Number、(5)String
2、工具类对象
(1)Math 、(2) Date 、
(3)RegExp(一个VBScript5.0的正则表达式对象)
用于存储检索模式。
例如:
//用new,定义一个RegExp对象,模式为'e'
var patt1=new RegExp("e");
//RegExp三种方法 test()、exec() 以及 compile()。
//test()方法: 检索字符串中的指定值。返回值是 true 或 false。
document.write(patt1.test("The best things in life are free"));
//exec() 方法检索字符串中的指定值。返回值是被找到的值。如果没有发现匹配,则返回 null。
document.write(patt1.exec("The best things in life are free"));
//compile() 既可以改变检索模式,也可以添加或删除第二个参数。
var patt1=new RegExp("e");
document.write(patt1.test("The best things in life are free"));
patt1.compile("d");
document.write(patt1.test("The best things in life are free"));
3、错误类对象