Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
92 views
in Technique[技术] by (71.8m points)

javascript - Prototype object Date inheritance not working

Considering this works.

Prototype:

function A(color){
 this.color = color
}

A.prototype.test = function(){
 return this.color
}

Inheritance:

function B(){
 A.call(this)
}

B.prototype = Object.create(A.prototype)
B.prototype.constructor = B

B.prototype.test2 = function(){
 return 'whatever...'
}

Instance:

const inst = new B(black)
console.log(inst.test()) //black
console.log(inst.test2()) //whatever...

Because this doesn't work.

Date object inheritance:

function A(){
 Date.call(this)
}

A.prototype = Object.create(Date.prototype)
A.prototype.constructor = A

A.prototype.test = function(){
 return 'whatever...'
}

Instance:

console.log(new A().getDay()) //Uncaught TypeError: this is not a Date object.
console.log(new A().test()) //whatever...

I tried inheriting with class syntax and it works perfect but not what I want

Date object inheritance with class:

class A extends Date {
 constructor(){
  super()
 }
 test(){
  return 'whatever...'
 }
}

Instance:

console.log(new A().getDay()) //3
console.log(new A().test()) //whatever...

It works perfect, but I don't want to use the class syntax.

question from:https://stackoverflow.com/questions/65913269/prototype-object-date-inheritance-not-working

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
Waitting for answers

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...