我有个这样的班
class A {
this.x
this.y
}
class B {
this.x = a.x
this.y = a.y
}
我希望b.x 10岁的时候,a.x = 10,当然,我可以
class B {
set x ( xValue ) {
a.x = xValue
}
}
但这不适用于+=、-=或其他操作符
上下文
我有一个GameObject类,在这个类中,有一个sprite类,我希望通过设置GameObject.x,Sprite.x = GameObject.x来实现这一点。我可以在呈现函数(func
有办法在两个闭包之间共享代码吗?
示例:
// ANTIPATTERN
var cbDoThing = function cbDoThing(arg){
return typeof closed1 +" " + arg;
}
function getClosure1(closed1) {
return cbDoThing;
}
function getClosure2(closed1) {
return function(arg) {
// do other work
return cbDoThing(arg);
我是JS的新手,我写了下面的代码,但我得到了错误"Prototype is not defined“。
var proto = {
describe: function () {
return 'name: ' + this.name;
}
};
var obj = {
[[Prototype]]: proto, //error in this line
name:'obj'
};
console.log(proto.describe());
console.log(ob
我看到了著名的JS的extend函数:
function extend(parent, child) {
var F = new Function();
F.prototype = parent.prototype;
child.prototype = new F();
//child.prototype.constructor = Child
}
我已经注释掉了重写构造函数属性的行。如果我以下列方式创建对象:
var p = function p() {this.parent = true};
var c = function c() {this.child
Lit使用这个reactive element class,我的每个web组件都扩展了它。我搞不懂为什么像elementProperties这样的静态属性在所有扩展Lit基类的web组件上都是不一样的。 See example here 为什么这两个类的静态属性不同?我认为静态属性是在类本身上设置的,在本例中是ReactiveElement。但这里似乎不是这样。我希望elementProperties和here是一样的,工作起来也差不多。 有没有人能告诉我我的想法哪里错了? 更新: OK用typescript重现了这种行为。所以我想我需要研究一下继承和静态属性在JS中是如何工作的。
const func = function() {
this.name = 'mon'
}
let f1 = new func
let f2 = Object.create(f1)
let f3 = Object.create(f2) // The following comments are what the browser console logs:
console.log(f1.__proto__) // {constructor: f}
console.log(f2.__proto__) // func {name: "mon"}
consol
我已经在网上搜索过了,但是我不能理解这个问题的答案。许多人对同一问题有不同的答案。我有点困惑。
为什么更喜欢原型继承而不是闭包,为什么它比闭包消耗更少的内存?
我在下面写了两个例子,这样你就对我所问的问题有了基本的了解。
var foo = function () {
this.bar = function () {
// do something
};
};
另一个是:
var foo = function () { };
foo.prototype.bar = function () {
// do something
};
我正在使用Graal将javascript作为客户语言运行,我想知道是否有一种方法可以在主机(Java)对象或代理上使用javascript Array.map功能。接下来是演示Kotlin代码,但应该足够接近Java代码。 fun main() {
val context = Context.newBuilder().build()
val javaOutputList = mutableListOf<Integer>()
val javaList = listOf(2, 2, 3, 4, 5)
val proxyJavaList = Proxy
为了好玩,我正在使用NodeJS,试图制作一个基本的Socket.IO服务器,我遇到了一个让我困惑不已的问题。
这是我的服务器代码。相当短,只有一个事件。
// Create the server and start listening for connections.
var s_ = require('socket.io')(5055);
var Session = require('./Session');
var connections = [];
var dummyID = 0;
// Whenever a connection is recei
我问了一个问题:
你可以看到我已经标出了答案。我理解他的反应,但我有点困惑他说的是什么意思:
The prototype belongs to the class, not the instance:
这是否意味着javascript在本例中有一个类?我以为javascript是无类的?它只有函数构造函数...在什么情况下,函数构造函数会变成类?当您使用.prototype访问器向它添加其他成员时会发生这种情况吗?
这是一个纯粹微不足道的学术价值问题:
如果我创建一个新对象,可以通过执行以下操作:
var o = { x:5, y:6 };
或
var o = Object.create({ x:5, y:6 });
当我查询o.prototype属性时,我得到undefined。我认为任何新创建的对象都会自动继承Object.prototype原型。
此外,在这个对象上调用toString() (Object.prototype的一个方法)可以很好地工作,这意味着o确实继承了Object.prototype。那么为什么我要使用undefined呢?