繼承:目前物件沒有的屬性和方法,別人有,拿來給自己用,就是繼承
var I={ }; var obj = { name: 'jack', age:18, sayGoodbye : function () { console.log("goodbye") ; } }// 混入式继承, a中 将继承obj的所有属性 for (var k in obj ) { a[k] = obj [k] ; }
利用原型中的成員可以被其相關物件共享此特性,可以實現繼承
實作步驟
a) 為原型物件新增成員(透過物件的動態特性),不是嚴格意義上的繼承,,,,實例物件繼承了原型
#建構子.prototypr = 新物件
如果物件原本有屬性和方法,使用替換的方法會覆寫原有的屬性和方法
js
Object.creat方法有相容性問題
1.偵測瀏覽器是否支援Object.create方法,如果不支援,直接手動為新增化方法方法加入新增功能方法。 2.自訂函數,在函數內部判斷瀏覽器是否支援Object.create方法,如果不支持,則手動建立物件返回,否則直接呼叫
function creat(obj) { if (object.creat){ return Object.creat(obj); }else{ function F(){ } F.prototype = obj; return new F(); } }
function MyArray() { this.name = "我是数组" } var arr = new Array(); MyArray.prototype =arr ; // 继承后,我的数组中 就有了原生数组对象的所有属性和方法 var myArr = new MyArray() ; // myArr 这个对象就继承自arr
原型鏈
什麼是原型鏈每個建構函式都有原型對象,每個物件都有建構函數,每個建構函數的原型物件都是對象,也就有建構函數
然後就形成一個鍊式的結構,我們稱之為原型鏈
原型繼承是什麼?
透過修改原型鏈的結構,實現繼承的方式就是原型繼承
屬性搜尋原則
當存取一個物件的成員的時候,先在自身找有沒有,如果有,直接使用
如果沒有找到,則去當前物件的原型物件中去找,如果有,直接使用
#如果沒有找到,則去原型物件的原型物件中去找,如果有,直接使用
#指導Object,如果還是沒有,則回傳null
#透過修改原型鏈繼承結構實現的繼承就叫原型繼承
function Person() { } ;var p = new Person() ;p對象包含的物件有: Person.prototype中的成員和自身擁有的成員Person.prototype中的成員有: Object.prototype的成員和自身的成員 Object.prototype的成員:
constructor : 指向和該原型相關的建構子
hasOwnProperty 方法: 判斷獨享本身是否擁有某個屬性##able# properj 四 屬性。物件本身,2.判斷屬性是否可以遍歷 toString toLocalString: 將物件轉換成字串 toLocalString轉換成字串的時候應用的本地的設定模式
valueOf 運算的時候,先呼叫valueOf方法取得物件的值,若該值無法參與運算,將會調 用原型的物件方法# 用原型物件:1. Function
3種建立函數的方式:
直接宣告
函數表達式
#可以用Function 來建立函數:
函数名 = Function ( ) ; 函数名 = Function(); 函数名 = Function(,,,...
var distinct = new Function(` var arr = []; for (var i = 0; i < arguments.length; i++) { if(arr.indexOf(arguments[i])==-1){ arr.push(arguments[i]); } } return arr; `);
//可以使用Ese下边的符号 来连接字符串进行换行操作 但是存在兼容性问题
console.log(distinct(1, 2, 34, 34, 5, 5));#########eval### ###可以將字串轉換成js程式碼並執行###### 注意:當使用eval解析JSON格式字串的時候,要注意,會將{}解析為代碼段#########1.可以在JSON格式字符串前面拼接"var 變數名="### eval("var 變數名稱=" + JSON格式的字串);#########2.可以在JSON格式字串前後拼接()# #####eval("("+JSON格式的字串+")")######### 靜態成員與實例成員### 靜態成員### 透過建構子去存取的屬性和方法就是靜態成員###### 實例成員### 透過物件(實例)去存取的屬性和方法就是實例成員###
以上是JS高階相關知識的詳細內容。更多資訊請關注PHP中文網其他相關文章!