繼承:目前物件沒有的屬性和方法,別人有,拿來給自己用,就是繼承
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() ;
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));
以上是JS高階相關知識的詳細內容。更多資訊請關注PHP中文網其他相關文章!