不渴望力量的哈士奇

不渴望力量的哈士奇


〖大前端 - 基础入门三大核心之JS篇(56)〗- 内置构造函数-LMLPHP

⭐ 内置构造函数

〖大前端 - 基础入门三大核心之JS篇(56)〗- 内置构造函数-LMLPHP

下面来敲一些demo验证一下上面的结论:

// 数组的内置构造函数,任何的数组都可以看作是Array的实例
console.log([1, 2, 3] instanceof Array);    // true
console.log([] instanceof Array);           // true

var arr = new Array(5);    // 得到一个长度为5的空数组
console.log(arr);
console.log(arr.length);

// 函数的内置构造函数
function fun() {

}
function add(a, b) {
    return a + b;
}
console.log(fun instanceof Function);   // true
console.log(add instanceof Function);   // true

var jianfa = new Function('a', 'b', 'return a - b');
console.log(jianfa(8, 3));

// 对象的内置构造函数
console.log({ a: 1 } instanceof Object);   // true
console.log({} instanceof Object);       // true

var o = new Object();   // 得到一个空对象
o.a = 1;
o.b = 1;
console.log(o);

〖大前端 - 基础入门三大核心之JS篇(56)〗- 内置构造函数-LMLPHP

上面还提到,我们可以给对象添加新的方法,从而拓展某类型的功能,那么如何扩展一个对象的方法呢?下面我们就来写一个扩展数组对象的方法的demo:

// 拓展数组的方法,实现数组的“求和”
Array.prototype.qiuhe = function () {
    // 备份上下文
    var arr = this;
    // 累加器
    var sum = 0;
    for (i = 0; i < arr.length; i++) {
        sum += arr[i];
    }
    return sum;
}

var arr = [1, 2, 3, 4];
var result = arr.qiuhe();   // 数组可以调用求和方法了
console.log(result);

〖大前端 - 基础入门三大核心之JS篇(56)〗- 内置构造函数-LMLPHP

至于算法方面,就要多刷算法题提高自己的算法思想


⭐ Obejct和Function

〖大前端 - 基础入门三大核心之JS篇(56)〗- 内置构造函数-LMLPHP

下面用代码来验证一下上图中的关系:

console.log(Object.__proto__ === Function.prototype);    //true, 任何函数都可以看作是`Function` `new` 出来的
console.log(Function.__proto__ === Function.prototype);  //true, 任何函数都可以看作是`Function` `new` 出来的

console.log(Function instanceof Object);        // true, `Obeject.prototype`是万物原型链的终点
console.log(Object instanceof Object);          // true, `Obeject.prototype`是万物原型链的终点
console.log(Function instanceof Function);      // true, 任何函数都可以看作是`Function` `new` 出来的
console.log(Object instanceof Function);        // true, 任何函数都可以看作是`Function` `new` 出来的

〖大前端 - 基础入门三大核心之JS篇(56)〗- 内置构造函数-LMLPHP

12-17 23:40