继承
原型式继承
所谓原型式继承,就是定义一个函数,该函数中创建一个临时性的构造函数,并将作为参数传入的对象作为这个构造函数的原型,最后返回这个构造函数的实例对象
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);
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。