Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 原型如何扩展对象?_Javascript_Prototypejs - Fatal编程技术网

Javascript 原型如何扩展对象?

Javascript 原型如何扩展对象?,javascript,prototypejs,Javascript,Prototypejs,在学习Javascript时,我一直在阅读原型源代码。我一直在想,用于扩展本机对象的代码在哪里 我一直在看 Object.extend(Function.prototype, (function() { Object.extend(String.prototype, (function() { Object.extend(Number.prototype, (function() { 到处都是,我找不到.extend函数的来源 我看到了: function extend(destinati

在学习Javascript时,我一直在阅读原型源代码。我一直在想,用于扩展本机对象的代码在哪里

我一直在看

Object.extend(Function.prototype, (function() {
Object.extend(String.prototype, (function() {
Object.extend(Number.prototype, (function() {
到处都是,我找不到.extend函数的来源

我看到了:

  function extend(destination, source) {
    for (var property in source)
      destination[property] = source[property];
    return destination;
  }
在第194-198行,不知道这是否是一个。如果是的话,我不知道是怎么回事


无论如何,我上面提到的问题是Prototype如何/在哪里扩展本机对象。

如果您查看这里的源代码:
您将看到:


是的,这是您看到的函数,稍后在代码中您将看到它用于获取
对象。扩展
,如下所示:

extend(Object, {
    extend: extend, //here's where the magic gets added
    inspect: inspect,
    toJSON: NATIVE_JSON_STRINGIFY_SUPPORT ? stringify : toJSON,
    toQueryString: toQueryString,
    toHTML: toHTML,
    keys: Object.keys || keys,
    values: values,
    clone: clone,
    isElement: isElement,
    isArray: isArray,
    isHash: isHash,
    isFunction: isFunction,
    isString: isString,
    isNumber: isNumber,
    isDate: isDate,
    isUndefined: isUndefined
});

因此,它调用了
extend()
,将自身作为属性添加到
对象
原型中,将自身添加为
对象
上的
.extend
方法。。。我在哪里找到这条线?@Thorpe-我想我明白你的意思了:键:对象。键。所以Object.keys实际上是对象属性。其他的| | keys在这里做什么?@Thorpe-它的意思是,如果它已经有
对象。keys
(本机浏览器版本),使用它,如果没有,那么使用该文件中定义的
keys
函数:我想是这样的:)我相信你的答案最能解释问题+1.