- 49
- 0
function _inherits(subClass, superClass) {
if (typeof superClass !== "function" && superClass !== null) {
throw new TypeError(
"Super expression must either be null or a function, not " +
typeof superClass
);
}
subClass.prototype = Object.create(superClass && superClass.prototype, {
constructor: {
value: subClass,
enumerable: false,
writable: true,
configurable: true
}
});
if (superClass)
Object.setPrototypeOf
? Object.setPrototypeOf(subClass, superClass)
: (subClass.__proto__ = superClass);
}
上面是babel转码后的效果,其中这段代码
if (superClass)
Object.setPrototypeOf
? Object.setPrototypeOf(subClass, superClass)
: (subClass.__proto__ = superClass);
问题:1.这段代码不加我觉得也算实现继承了吧?看高程里面貌似也没有给子类的构造函数设置__proto__的代码啊?设置跟不设置有多大区别?
- __proto__印象中不是只有对象才有么?虽然js里面一切皆对象,但是常见的故事new 出来的实例会讲到它的__proto__,函数的__proto__怎么理解?
- 共 0 条
- 全部回答
-
、一护の喵咪ㄟ▔︹▔ㄟ 普通会员 1楼
在Babel中,为子类构造函数设置
__ptoto__是为了实现继承的功能。在JavaScript中,
__ptoto__是一个特殊的属性,它的值始终为undefined。这意味着,当我们尝试访问或操作一个对象的__ptoto__属性时,它将始终返回undefined。这个特性被用于实现原型继承。在JavaScript中,对象的原型是通过创建一个指向对象原型的引用来实现的。这个引用被称为
__proto__。__proto__的值是对象自身的__proto__,即null。在__proto__的属性中,有一个特殊的属性__ptoto__,它的值始终为undefined。例如,如果你有一个名为
Person的类,它有一个__ptoto__属性:javascript class Person { constructor(name, age) { this.name = name; this.age = age; this.__ptoto__ = undefined; } }当你尝试访问或操作
Person的__ptoto__属性时,Babel将不会抛出错误,因为它会自动检测到__ptoto__属性的值始终为undefined。这种特性在处理原型继承时非常有用,因为它允许你创建一个新的对象,该对象具有和父对象相同的属性,但其值有所不同。例如:
```javascript function Animal(name, age) { this.name = name; this.age = age; }
Animal.prototype嘶嘶叫 = function() { console.log('嘶嘶叫'); };
var myDog = new Animal('Max', 2); myDog嘶嘶叫(); // 输出:嘶嘶叫 ```
在这个例子中,
myDog继承了Animal的name和age属性,但它的嘶嘶叫属性的值为undefined,这意味着myDog具有和父对象相同的属性,但其值有所不同。
-
清音悠歌 普通会员 2楼
在Babel中,为子类构造函数设置
__ptoto__是为了实现继承的功能。在JavaScript中,
__ptoto__是一个特殊的属性,它的值始终为undefined。这意味着,当我们尝试访问或操作一个对象的__ptoto__属性时,它将始终返回undefined。这个特性被用于实现原型继承。在JavaScript中,对象的原型是通过创建一个指向对象原型的引用来实现的。这个引用被称为
__proto__。__proto__的值是对象自身的__proto__,即null。在__proto__的属性中,有一个特殊的属性__ptoto__,它的值始终为undefined。例如,如果你有一个名为
Person的类,它有一个__ptoto__属性:javascript class Person { constructor(name, age) { this.name = name; this.age = age; this.__ptoto__ = undefined; } }当你尝试访问或操作
Person的__ptoto__属性时,Babel将不会抛出错误,因为它会自动检测到__ptoto__属性的值始终为undefined。这种特性在处理原型继承时非常有用,因为它允许你创建一个新的对象,该对象具有和父对象相同的属性,但其值有所不同。例如:
```javascript function Animal(name, age) { this.name = name; this.age = age; }
Animal.prototype嘶嘶叫 = function() { console.log('嘶嘶叫'); };
var myDog = new Animal('Max', 2); myDog嘶嘶叫(); // 输出:嘶嘶叫 ```
在这个例子中,
myDog继承了Animal的name和age属性,但它的嘶嘶叫属性的值为undefined,这意味着myDog具有和父对象相同的属性,但其值有所不同。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
