javascript-繼承

繼承

原型式繼承

所謂原型式繼承,就是定義一個函數,該函數中建立一個臨時性的構造函數,並將做爲參數傳入的對象做爲這個構造函數的原型,最後返回這個構造函數的實例對象app

function object(o){
    dunction F (){
    F.prototype = o
    return new F()
 }

根據原型式繼承所總結的object()函數實現繼承,以下列代碼:dom

var person ={
    name : '花',
    friends : ['僞','化']
}
var result = object(person);
result.friends.push('貓');
console.log(result.freends);//僞,化,貓

這種原型式繼承要求必須具備一個對象能夠做爲另外一個對象的基礎。函數

上述原型式繼承,也能夠用Object的create()方法代替自定義的object()函數,從而是想規範化。this

var person = {
    name : '化'
    friends : ['僞','花']
}
var anotherperson = Object.create(person);
anotherperson.friends.push('貓');
console.log(anotherperson.friends);//僞,花,貓

藉助構造函數

不管是原型鏈仍是原型式繼承,都有相同的問題。要解決這樣的問題,能夠藉助構造函數(也能夠叫作僞造對象或經典繼承)。
這種方式實現很是簡單,就是在子對象的構造函數中調用父對象的構造函數。具體能夠經過調用apply()和call()方法實現。
apple()和call()都容許傳遞指定某個對象的this。對於繼承來說,能夠試想子對象的構造函數中調用父對象的構造函數時,講子對象的this和父對象的this綁定在一塊兒。prototype

function Fun (){
    this.color = '藍'
}
function Fn(){
    Fun.call(this);
}
 var result = new Fn
result.color;//藍

組合方式繼承

組合繼承,也叫作僞經典繼承,指的是將原型鏈或原型式繼承和藉助構造函數的技術組合在一塊兒,發揮兩者的長處的一種繼承方式。code

  • 使用原型鏈或原型式繼承實現對原型的屬性和方法的繼承。
  • 經過藉助構造函數實現對實例對象的屬性的集成。
function Fun (name){
    this name = name;
 }
Fun.prototype.sayname = function(){
    console.log(this.name);
}
function Fn (name,age){
    Fun.call(this.name);//繼承屬性
    this.age = age;
}
Fn.prototype = Fun.prototype;集成方法

獲取Date()對象

var d1 = new Date();// 構造函數
var d2 = Date();// 函數

console.log(d1);
console.log(d2);

var d3 = new Date;
console.log(d3);

獲取日期

var d = new Date();

console.log(d.getDate());// 17
console.log(d.getDay());// 5

console.log(d.getFullYear());// 2018
console.log(d.getYear());// 118 - 表示距離1900年的年份
// 獲取當前時間的毫秒數
console.log(d.getMilliseconds());
// 獲取毫秒數 - 距離1970-1-1 0點0分
console.log(d.getTime());
/*
    毫秒數的實際應用:
    1.將毫秒數做爲標識(ID)
    2.將毫秒數做爲時間戳
 */

Math類型

// 不能建立對象 - TypeError: Math is not a constructor
// var m = new Math();
// console.log(m);

console.log(Math.PI);

console.log(Math.floor(6.5));// 6

console.log(Math.max(4,8));// 8

var arr = [3,1,6,8,25];
console.log(Math.max.apply(null,arr));// 25

// 生成隨機數 - 只能生成 0 ~ 1 之間的隨機數
console.log(Math.random());
// 生成 0 ~ 100 之間的隨機數
console.log(Math.random() * 100);
// 生成 1 ~ 100 之間的隨機數
console.log(Math.random() * 99 + 1);
相關文章
相關標籤/搜索