为什么这种方法没有方法打印

Bru*_*uno 0 javascript

我确信这真的很简单,但为什么以下不起作用.

var o = function() { };
o.prototype.print = function( ) { console.log("hi") };
o.print(); // console message: Object function o() { } has no method 'print'
Run Code Online (Sandbox Code Playgroud)

在这里小提琴

UPDATE

为什么这也行不通

var o = function() { };
o.prototype.print = function( ) { console.log("hi") };
var c = Object.create( o );
c.print();
Run Code Online (Sandbox Code Playgroud)

如有必要,我可以开始一个新问题.

Zet*_*eta 6

1.问题

我确信这真的很简单,但为什么以下不起作用.

o 是新对象的构造函数,您必须创建一个新对象才能使用原型方法:

var x = new o();
x.print();
Run Code Online (Sandbox Code Playgroud)

2.问题

为什么这也行不通

因为Object.create需要原型而不是对象:

var o = function() { };
o.prototype.print = function( ) { console.log("hi") };
var c = Object.create( o.prototype );
c.print();
Run Code Online (Sandbox Code Playgroud)

也可以看看