一、什么是對象:
在java、actionscript等語言中都有對象(類的概念),我的理解是對象就是屬性和方法的集合,在編程語言中有一句話叫一切皆對象,Object對象是所有對象的基類,都是繼承Object;
二、在js中對象的創建:
1、用new關鍵字創建對象:
var obj=new Object();
new 關鍵字是語法糖,他創建了一個實例對象,繼承了Object的屬性和方法,以下是new 經歷哪些步驟和代碼模擬
<script type="text/javascript"> function Persion(){ /** *func:構造函數 */ this.dec="這是描述"; } Persion.prototype.sayHell=function(){ console.log("您好"); } function desaginNew(tt){ /* *func:模擬new關鍵字; */ //第一步:創建新的對象; var obj={}; var creatObj=[].shift.call(arguments); //第二步:改變this指向,把新的對象的_proto_指向Persion對象的prototype原型對象; obj._proto_=creatObj.prototype; //第三步:執行構造函數的代碼為新對象添加屬性和方法; Persion.call(obj); //第四步:返回對象; return obj; } var newPersion=desaginNew(Persion); </script>
2、用字面量創建對象:
var obj={name:"",age:"",say:function(){}};
3、構造函數創建對象:
構造函數:在java語言中類的定義中都有構造函數,在js中也有構造函數的概念,Object對象都有constructor構造函數方法;
js中Object對象都有以下屬性和方法:
1、constructor:構造函數屬性,它指向了Object()函數;
2、hasOwnProperty:判斷是否是對象自身屬性和方法;
3、isPrototypeOf:判斷是否是某個對象的子對象即繼承某對象;
function Persion(){ /** *func:構造函數 */ this.name="名字"; this.say=function(){ console.log("您好"); } } //自身屬性要實例化后才能訪問屬性和方法; console.log(new Persion().name);//"名字" console.log(new Persion().say());//"您好;
4、es6中新增class關鍵字創建類