1 表達式的概念
廣義的概念:所有返回的一段代碼塊,都可以成為表達式.比如:
var a=0;var a, b; a = 0;这个表达式的返回值为0; b = a;这个表达式的返回值为a;
賦值表達式的返回值為=右邊的值;
2 面向對象的概念:
一種程式設計思想.核心:在解決任何問題的時候,首先試圖去找到一個物件來幫助解決問題.
優點:
身份:調度者;
程式碼的靈活度高;
可維護性高;
可擴展性高;
缺點:
可能造成程式碼的複雜度提高
可讀性相對差執行者
順序: 一般情況下不能打亂,從上至下一步一步執行.
4 Javascript語言的特徵:
弱型別
:多範式,一切都是物件
基於原形的語言
rr
只要聲明一個函數,那麼當原型就存在那麼當原型透過該函數創建出來的每一個物件,都共享此原型,也就是說上述創建出來的所有物件可以直接存取原型上的任何成員(屬性和方法);(物件的動態特性就是物件可以同過.或[]來動態建立物件);
6 原型的本質
原型的本質就是物件
function foo(){}; foo.prototype['name']='ksir'; var f = new foo(); console.log(f.constructor ===foo.prototype.constructor);
在建構函式中存在相同的邏輯程式碼,然後再建立物件的時候,會拷貝該函數中的程式碼邏輯,把構造函數內的方法提取出來放在一個公共的地方,這個公共的地方是該構造函數創建出來的對像都能訪問,–構造函數的所有對象能夠共享構造函數的原型。
優點:實現同類物件的資料共享
透過函數:
function Person(name,age,gender){ this.name = name; this.age = age; this.gender = gender; this.talk = function(){ console.log('hello'); } } var kangfeng = new Person('小强',21,'男'); var xiaoming = new Person('小明',20,'女'); var xiaohong = new Person('小红','19','女'); kangfeng.talk(); xiaoming.talk(); xiaohong.talk(); //思考:这三个儿女的talk方法是否一样? console.log(xiaoming.talk === kangfeng.talk); console.log(xiaohong.talk === xiaohong.talk): //这三个对象的方法是不一样,相互独立的 Person.prototype.addfu(){ console.log('给原型添加一个函数'); }
透過物件:
<fnName>.prototype;
object.__proto__; //两个下划线
9 原型屬性&原型對象
原型屬性:站在函數的角度,原型可以稱為該函數的原型屬性
原型物件:站在物件的角度,原型可以稱為該物件的原型物件
10 __proto__雙下劃線標準
_這種雙底線的標準不是w3c的標準,這些屬性都是非標準屬性。
有相容性問題。如果我們無法透過雙底線取得原型屬性的時候,我們就得透過函數來取得它
Math.__proto__===object.prototype;
11 標準建構函數的寫法//哪些屬性要保存在構造函數的內部,哪些屬性需要提取出來放放原型上
function getPrototype(obj){ //判断浏览器是否兼容__proto__属性 //return !!obj.__proto__? obj.__proto__:obj.constructor.prototype; if(obj.__proto__){ //支持 return obj.__proto__; }else{ //获取该对象的构造函数 //在通过此函数的prototype属性获取其原型对象 return obj.constructor.prototype; } } function A(){}; var a = A(); console.log(getPrototype(a).constructor); //如果我们的函数中有if else return结构,我们可以用3元运算符来优化.
12 注意點
給構造函數添加方法一般添加在原型上,為了方便,一般將方法以對象的形式添加到.prototype{}>.prototype{} ,同時,不要忘了加入constructor: 建構函數名 鍵值對形式。
13 原型的特性
動態性:
給原型擴充成員會直接反應到已建立的物件身上
替換原型物件不會反應到已建立的物件之後創建出來的物件
唯一性
由同一函數創建出來的所有物件,共享同一個原型物件
繼承性:
以上就是Javascript物件導向篇(一)的內容,更多相關內容請關注PHP中文網(www.php.cn)!