一.Object函数:
对象函数, 是由Function实现的,原型链的最终端,是所有对象的父类,在Object原型对象里定义的属性和方法,可以在所有对象里共享。本身提供了一系列可共享的方法
1.1.Object函数的本质:
Object就是用 function实现的特殊的 构造函数 不要当做函数使用。 Object( ) --不要这样用
1.2 使用方法
1. new Object( ); //调用其构造方法
2. 包含的方法 Object . defineProperties() ; //调用其全局的属性和方法。
三。 创建对象的方式 注意对象中 属性由逗号 隔开
二、创建对象的方式
2.1字面方式
对象直接量是由若干名/值对组成的映射表,名 与 值 间用冒号分隔,名/对 间用 逗号分隔。
var obj = { para1 :1 , para2 :2 , fun : function(){}}
对象就是 无序 的名值对 key : 对象的变量名 value :变量实际值,可以为 基本类型 对象类型(包括函数) |
var a = { name :"张三", age: 18 , //遍历时顺序不定不分,写的先后顺序}//fav的值是一个对象,对象里面 包含属性名 ball 值是一个: 对象["篮球","足球"]--数组 数组是一个特殊的对象 下面是一个名/值对
fav :{ //封装类型 ball :["篮球","足球"] , travel :["大连","西藏"] }
对象里定义函数不可以 function acc() 对象中是 名 值 对, 名字是变量名 值任意 基本类型、 对象类型(对象类型包括函数)
sayhello : function(){ alert("hellow") }//调动方法 console.log( a.name ); console.log( a.fav.ball ); console.log( a.fav.ball[0] ); a.sayhello();
//如果 alert( a.sayhello) 不会调用函数,会打印出sayhello代码
2.2、创建对象的方式2 --构造函数方法(调用其他构造函数也可以,只是原型链指向不同)
通过new运算符,初始化一个新的对象。 关键字new 后跟随一个函数调用。这个函数 称作构造函数(constructor),构造函数用于初始化一个新的对象
//一下定义函数方法同上面 相同 var b = new Object(); //先new 一个 Object 占用内存空间 b.name = "张三b"; //为b 创建属性赋值 b.age = 18; b.fav ={ball :["篮球b","足球b"], travel :["大连b","西藏b"]} b.sayhello = function(){ //匿名函数 alert("hellob"); } //调用方式 console.log(b.name); console.log(b.fav.ball); console.log(b.fav.ball[0]); b.sayhello();
2.3、 也可以使用 Object静态方法: ECMAScript5标准,低版本浏览器不兼容
var obj = Object.create({ name :"third", age :"18" }) console.log(obj.name);
2.4、 定义一个 function
function Fun(){
} var fun = new Fun(); //也是创建一个对象,只不过对象的原型链不直接连到Object 而是连接到Fun( )对应的原型对象上。 Fun()的原形链指向Object三 .对象 访问方式
对于普通变量只需要使用 对象名 点 属性名 直接调用属性名和方法,多层次也是如此。
对于变量名为另一个变量 的值需要使用 [ ] 来调用。
var obj = Object.create({ name :"third", age :"18" }) console.log(obj.name); var ag = "age"; //现在想通过变量 ag 的值访问 obj中的age console.log( obj[ag] ); <----->obj.age
四. 原型链的特点
Obj 变量 :new Object ---> Object.prototype
Object构造函数 : new Function--->Function . prototype---->Object . prototype
Function构造函数 : new Function --->Function . prototype --->Object . prototype
五.原形链特点总结
原形链的终点都是 Object.prototype, 因此所有对象都具有 Object.prototype 扩展的属性及函数。
Object.prototype对象的__proto__指针为null , 终结原型链。
Function是自省的,因此prototype与__proto__都指向 Function.prototype对象。
六.扩展Object全局变量和方法
Object.kuozhan = function(){ alert("扩展方法"); } Object.kuozhan(); //Object的全局变量和方法
七. Object的prototype扩展方法,所有对象都可以调用
Object.prototype.prokuozhan = function(){ alert("prototype 扩展方法") } var a = {}; //定义一个空对象 a.prokuozhan();