Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.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 String.prototype.something()实际上是如何工作的?_Javascript - Fatal编程技术网

Javascript String.prototype.something()实际上是如何工作的?

Javascript String.prototype.something()实际上是如何工作的?,javascript,Javascript,在我正在读的书中没有任何关于这一点的解释。他们只是举了个例子,一点也不解释 我一直在测试和实验它,试图推断它是什么,它是如何工作的,最重要的是,这与仅仅创建一个新变量,然后为它分配一个函数有什么不同 唯一的区别是,您可以在String.prototype中使用“this”关键字,因为它必须附加到的字符串变量将成为父对象 我不明白的是,你到底在创造什么?您正在创建一个新方法吗?所有物价值只是一个函数,可以包含一个值或一些要执行的语句,然后将该函数分配给。。一根新绳子?为什么我需要将新函数分配给字符

在我正在读的书中没有任何关于这一点的解释。他们只是举了个例子,一点也不解释

我一直在测试和实验它,试图推断它是什么,它是如何工作的,最重要的是,这与仅仅创建一个新变量,然后为它分配一个函数有什么不同

唯一的区别是,您可以在String.prototype中使用“this”关键字,因为它必须附加到的字符串变量将成为父对象

我不明白的是,你到底在创造什么?您正在创建一个新方法吗?所有物价值只是一个函数,可以包含一个值或一些要执行的语句,然后将该函数分配给。。一根新绳子?为什么我需要将新函数分配给字符串才能运行它?如果我只针对函数名,它将不起作用。它必须附加到字符串变量才能执行函数。为什么?

String.prototype.more=function(){
var confirm2=2+2;
返回确认2;
}

警惕(more())您可以使用prototype属性向给定类型的所有对象添加新属性, 在您的示例中,您试图向字符串类型添加新属性:

 String.prototype.more = function() {
        var confirm2 = 2 + 2;
        return confirm2;
    }
    alert('example'.more());
    //that will allert 4

与其他编程语言相比,JavaScript在某些方面有点怪异

  • JavaScript函数是完整的对象。在其他语言中,函数是语言结构。例如,如果您创建这样的函数
  • 您真正要做的是为根对象(即浏览器中的
    窗口
    对象)创建一个类型为
    function
    的对象

    函数example1(){}
    console.log(window.example1)//函数example1(){}
    
    console.log(typeof window.example1)//函数
    这里有一个好的JavaScript教程:特别是看看“原型,继承”好了。你应该读一下这篇文章,就像你把一个苹果放在盒子里,然后问我为什么不能访问它外面的苹果?JavaScript的原型继承允许你任意地向现有类型添加功能。在这里,示例将一个名为
    more
    的函数添加到
    String
    类型中。因为它已添加到字符串中,所以您需要像调用“字符串值”一样调用它。more()
    在这个问题中,您已经问了十几个问题。问一个好问题。看见有关此问题的答案,请参见(除其他外),简单地说字符串被视为附加新函数的对象是否正确,该函数可以是属性,也可以是方法,具体取决于它包含的内容?如果是这样的话,那么显然你不能访问对象之外的属性或方法。如果是这样的话,那是有道理的。我承认,一开始,这有点让人困惑。由于JavaScript的更新版本,您可以使用
    关键字。但这只是原型链的语法糖
    function example1() {}