目录
概念
大多数面向对象的编程都是通过定义一个类,然后根据类创建的对象。比如上帝要创造一个女同学叫小明,首先要打造一个女生的模型,然后在女生模型的基础上雕刻小明的独有特点。此时小明(对象)的上一级就是一个女生模型(类)。
但Js小姐天生叛逆,她的对象不是从类中创建,而是通过原生链的方式创建的。比如某天她发现某小鲜肉很帅但眼睛不够大,于是她拿来一个小鲜肉添加大眼睛作为自己的“对象”。此时大眼睛小鲜肉(对象)的模型就是一个小眼睛小鲜肉(对象)。
Js中的每个对象都是一个实例,每个对象都有原型。一个对象的原型指向另一个对象,并继承它的属性。
原生链示例:
创建一个数组arr : arr -------> Array.prototype -------> Object.prototype ------>null
创建一个函数foo: foo -------> Function.prototype ------>Object.prototype ------->null
创建一个对象bigeyes : bigeyes ------> smalleyes.prototype ----->Object.prototype ----->null
-
对象的类型:
在Js小姐的世界里,一切都是对象(花痴脸)
类型:number、string、boolean、function、undefined、object(null、array、{})
判别:1.typeof 待测类型 ----可判断number、string、boolean、function、undefined(注:object三种无法用typeof分辨)
2.object判别:
(1)null:待测类型===null
(2)数组:Array.isArray(数组)
3.特殊判别
(1)任意类型可以直接if判断,不必转换成boolean类型
(2)判断变量是否存在:
(全局)typeof window.变量==='undefined'
(函数内)typeof 变量==='undefined'
类型转换:
1.任意类型--->string:String(任意类型) 或 任意对象.toString()
注:null和undefined没有.toString()方法
number类型调用时报错,正确使用为:(123).toString() 或 123..toString()
2.任意类型--->number:parseInt(任意类型) parseFloat(任意类型)
注:浮点型数据在parseInt()后仍为int类型
标准对象:
1.Date
2.RegExp(正则表达式)
3.JSON(数据交换格式)
-
对象的创建:
1.{}的方式
var bigeyes = {
name:xiao_xian_rou,
height:183,
weight:75,
'middle-school':'No1 school'
run:function(){
console.log(this.name+' is running');
}
};
bigeyes.run();//调用属性 xiao_xian_rou is running
bigeyes.age = 20;//添加属性
delete bigeyes.weight; //删除属性(即使不存在也不报错)
'weight' in bigeyes;//false 判断属性是否存在(包括继承属性)
bigeyes.hasOwnProperty('weight') //false 判断属性是否存在(不包括继承属性)
2.构造函数
3.区别
-
对象的继承:
(未完......)