继承

原型式继承

所谓原型式继承,就是定义一个函数,该函数中创建一个临时性的构造函数,并将作为参数传入的对象作为这个构造函数的原型,最后返回这个构造函数的实例对象

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

根据原型式继承所总结的object()函数实现继承,如下列代码:

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

这种原型式继承要求必须具有一个对象可以作为另一个对象的基础。

上述原型式继承,也可以用Object的create()方法代替自定义的object()函数,从而是想规范化。

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

借助构造函数

无论是原型链还是原型式继承,都有相同的问题。要解决这样的问题,可以借助构造函数(也可以叫做伪造对象或经典继承)。
这种方式实现非常简单,就是在子对象的构造函数中调用父对象的构造函数。具体可以通过调用apply()和call()方法实现。
apple()和call()都允许传递指定某个对象的this。对于继承来讲,可以试想子对象的构造函数中调用父对象的构造函数时,讲子对象的this和父对象的this绑定在一起。

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

组合方式继承

组合继承,也叫做伪经典继承,指的是将原型链或原型式继承和借助构造函数的技术组合在一起,发挥二者的长处的一种继承方式。

  • 使用原型链或原型式继承实现对原型的属性和方法的继承。
  • 通过借助构造函数实现对实例对象的属性的集成。
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);

李威振
16 声望5 粉丝

别离时方知此世间,花亦花来人亦人