CNode

用新语法class怎么实现prototype常量

问答
Iishanyang发布于8 年前最后回复8 年前9 回复4147 浏览0 收藏

function Person () { }

Person.prototype.fingerNumber = 10

var xiaobai = new Person() var xiaohong = new Person() xiaohong.fingerNumber=11 // 11 console.log(xiaohong.fingerNumber) // 10 console.log(xiaobai.fingerNumber)

查看回复

回复 (9)

K
koroshi#1·8 年前

class P { constructor(){this.a="10"}}这样不就好了- -~

L
linliny#2·8 年前
Object.defineProperty(Person.prototype, 'fingerNumber ', {
    value: '10',
    Writable: false
})
I
ishanyang#3·8 年前
引用 linliny

@linliny thanks a lot 是想要的答案

I
ishanyang#4·8 年前
引用 koroshiclass P { constructor(){this.a="10"}}这样不就好了

@koroshi 使用prototype是为了节省内存,比如实例化1000个人 正常人都是10个手指 就没必要单独拥有此属性,2楼是正解

X
xiaozhongliu#6·8 年前

typescript static property了解一下

N
noe132#7·8 年前

楼上的static property并不是在原型链上的。 目前只能在类定义后对prototype修饰,或者继承一个已经修饰好的类。

I
intellism#8·8 年前

get fingerNumber() { return 10; }

X
xiaozhongliu#9·8 年前
引用 noe132楼上的static property并不是在原型链上的。 目前只能在类定义后对prototype修饰,或者继承一个已经修饰好的类。

@noe132 虽然没在prototype上, 但也一样能达到效果啊, 静态成员也是只有一份. 当然唯一有些不同的是, 静态成员直接从类上去找, 而不是从对象上去找.

class Foo {
    static readonly bar = 10
}
参与回复
登录后即可参与回复。登录