Javascript 对象是如何获得Function.prototype方法的?

Javascript 对象是如何获得Function.prototype方法的?,javascript,Javascript,我试图弄清楚对象构造函数如何拥有像call和apply这样的方法,因为它的原型没有将它们作为属性,而Object.hasOwnProperty('call')在我当前的浏览器(Chrome)中返回false 请告诉我这个魔法是从哪里来的 我编辑了我的问题,因为有些人似乎不明白我的意思: 函数从其原型继承调用 var a = function(){} a.hasOwnProperty('call') // false a.prototype.hasOwnProperty('call') // tr

我试图弄清楚对象构造函数如何拥有像
call
apply
这样的方法,因为它的原型没有将它们作为属性,而
Object.hasOwnProperty('call')
在我当前的浏览器(Chrome)中返回false

请告诉我这个魔法是从哪里来的

我编辑了我的问题,因为有些人似乎不明白我的意思:

函数从其原型继承
调用

var a = function(){}
a.hasOwnProperty('call') // false
a.prototype.hasOwnProperty('call') // true
对象
具有
调用
方法。但是,
Object.prototype
没有
call
方法:

Object.hasOwnProperty('call') // false
Object.prototype.hasOwnProperty('call') // false

但是对象中的调用是一个函数,它是一个可以用来创建对象的构造函数:

var foo = new Object();
当然,通常只使用对象文字:

var foo = {};
请注意:

Object.getPrototypeOf(Object) === Function.prototype // true
但是:


它不是两个原型-
Object
是一个函数,它创建的对象具有原型
Object.prototype
<代码>对象本身具有prototype
函数。prototype
对象是一个函数-它是一个可用于创建对象的构造函数:

var foo = new Object();
当然,通常只使用对象文字:

var foo = {};
请注意:

Object.getPrototypeOf(Object) === Function.prototype // true
但是:


它不是两个原型-
Object
是一个函数,它创建的对象具有原型
Object.prototype
<代码>对象本身具有prototype
函数。prototype
对象是一个函数-它是一个可用于创建对象的构造函数:

var foo = new Object();
当然,通常只使用对象文字:

var foo = {};
请注意:

Object.getPrototypeOf(Object) === Function.prototype // true
但是:


它不是两个原型-
Object
是一个函数,它创建的对象具有原型
Object.prototype
<代码>对象本身具有prototype
函数。prototype
对象是一个函数-它是一个可用于创建对象的构造函数:

var foo = new Object();
当然,通常只使用对象文字:

var foo = {};
请注意:

Object.getPrototypeOf(Object) === Function.prototype // true
但是:

它不是两个原型-
Object
是一个函数,它创建的对象具有原型
Object.prototype
<代码>对象本身具有prototype
功能。prototype

尝试以下操作:

function Fn() {};
Fn.prototype.pro = "this_pro";
var object = new Fn();
object.prototype = {};

object.hasOwnProperty("pro"); # false
object.prototype.hasOwnProperty("pro"); # false
"pro" in object; # true
这是:

object.__proto__.hasOwnProperty("pro") #true
通常,一个对象不应该具有其原型的属性,而应该具有其自身的属性。这些属性用于作为其实例的对象(作为函数)。更清楚的是:

object.__proto__ === Fn.prototype; # true
试试这个:

function Fn() {};
Fn.prototype.pro = "this_pro";
var object = new Fn();
object.prototype = {};

object.hasOwnProperty("pro"); # false
object.prototype.hasOwnProperty("pro"); # false
"pro" in object; # true
这是:

object.__proto__.hasOwnProperty("pro") #true
通常,一个对象不应该具有其原型的属性,而应该具有其自身的属性。这些属性用于作为其实例的对象(作为函数)。更清楚的是:

object.__proto__ === Fn.prototype; # true
试试这个:

function Fn() {};
Fn.prototype.pro = "this_pro";
var object = new Fn();
object.prototype = {};

object.hasOwnProperty("pro"); # false
object.prototype.hasOwnProperty("pro"); # false
"pro" in object; # true
这是:

object.__proto__.hasOwnProperty("pro") #true
通常,一个对象不应该具有其原型的属性,而应该具有其自身的属性。这些属性用于作为其实例的对象(作为函数)。更清楚的是:

object.__proto__ === Fn.prototype; # true
试试这个:

function Fn() {};
Fn.prototype.pro = "this_pro";
var object = new Fn();
object.prototype = {};

object.hasOwnProperty("pro"); # false
object.prototype.hasOwnProperty("pro"); # false
"pro" in object; # true
这是:

object.__proto__.hasOwnProperty("pro") #true
通常,一个对象不应该具有其原型的属性,而应该具有其自身的属性。这些属性用于作为其实例的对象(作为函数)。更清楚的是:

object.__proto__ === Fn.prototype; # true

谢谢我又忘了Object.getPrototypeOf是要使用的对象谢谢!我又忘了Object.getPrototypeOf是要使用的对象谢谢!我又忘了Object.getPrototypeOf是要使用的对象谢谢!我又忘了Object.getPrototypeOf是要使用的对象