JS 继承当中构造函数的申明方式?

问题描述

var inherit = (function () {    var F = function () {}; //第一种申明方式
    // function F() {};     //第二种申明方式
    return function (Target, Origin) {
        F.prototype = Origin.prototype;
        Target.prototype = new F();
        Target.prototype.contructor = Target;
        Target.prototype.uber = Origin.prototype;
    }
}());

如上注释所示:

第一种算是以变量的形式存储一个函数;
第二种我是直接申明一个构造函数;
主要是这两种用起来功能都可以实现(都可以new 对象),就是不太明白这两种方式的区别;
在当前方法中用那种比较好,为什么?

烦请各位大大神小弟解惑,感谢!感谢!


猛跑小猪
浏览 397回答 1
1回答

FFIVE

函数定义有3中实现方式构造函数new Function('a', 'b', 'return a + b')函数声明function name([param,[, param,[..., param]]]) {    [statements] }函数表达式let function_expression = function [name]([param1[, param2[, ..., paramN]]]) {    statements };构造函数不常用主要说一下函数声明和函数表达式的区别区别很简单函数声明 函数声明提升 可以再声明语句之前调用函数,理解为声明语句被提升到了执行环境顶部,声明提升的特性在es6 module中可以解决了循环引用函数表达式 没有了函数声明提升但是可以使用var,let,const的特性就你的代码而言没有区别
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript