城歌

文章 评论 浏览 32

城歌 2022-05-04 13:57:31

先来复习下两者的写法区别:

原型链继承

function Hero(name){
    this.name = name;
}
Hero.prototype.sayName = function(){
    console.log('my name is',this.name)
}

function smallHero(){
    this.age = 30
}
smallHero.prototype = new Hero('spiderman');
var s1 = new smallHero()
s1.sayName()  //my name is spiderman;
或者写成:
function smallHero_second(){
    Hero.apply(this,arguments) //此处有缺点只能继承构造函数里的不能继承原型里的方法
    this.age = 22; 
}

ES6继承

class smallHero11 extends Hero{
    constructor(props){
        super(props);
        this.age = 30;
    }
}
var s2 = new smallHero11('superman') 
s2.sayName()  ==>my name is superman

继承的主要区别:

原型链继承里的

smallHero.__proto__ === Function.prototype

ES6的class里的

smallHero11.__proto__ === Hero , 子类可以直接通过 proto 寻址到父类
很受用,之前都没发觉到function xxx 其实是等同于 new Function ,所以proto指向的是Function 的constructor....

第 7 题:ES5/ES6 的继承除了写法以外还有什么区别?

城歌 2022-05-04 13:57:13

5. shebang line(#!) 与node.js工具

写脚本已经是node.js的一个主流功能,比如gulp-cli, webpack-cli等等。今天用一个小工具突然报了一个莫名其妙的错误,错误原因比较有意思,这里记录下。

#!/usr/bin/env node

var xxx...

一般情况下,脚本都是上面的格式,表示用node去执行下面的js代码。其中第一行叫shebang line,指明用来执行脚本的解释程序。

而使用的小工具报了这样的错误信息:

env: noder: No such file or directory

一番排查,问题出在shebang line:

fs.readFileSync('脚本所在路径').toString().slice(0, 30)

// --->

'#!/usr/bin/env nodenn'use stri'  // 正常的
'#!/usr/bin/env nodernrn'use st' // 报错的

是不是看出什么了?对的,问题就出在r上。

unix/linux 下,换行符是n,于是,有问题的shebang line被解析后,env是noder,而不是node。所以系统根本没法找到一个叫noder的程序来执行这段脚本...

最后问了工具的开发者,他在windows上开发,

杂七杂八问题以及解决方案记录

更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文