哪位大神能帮我看一下,关于js的

<script>

function foo(){

getName = function(){

console.log(1);

return this;

}

   foo.getName= function(){console.log(2)}

foo.prototype.getName = function(){

console.log(3);

var getName = function(){console.log(4)}

function getName(){

console.log(5)

}

foo.getName()/*2*/

       getName()/*4*/

foo().getName()/*1*/

getName()/*1*/

new foo.getName()/*2*/

new foo().getName()/*3*/

new new foo().getName()/*3*/

</script>

把这几个放到一起,我又懵逼了


qq_小盛开_0
浏览 1783回答 1
1回答

按照自己的节奏前行

<script> <!--首先,你要灌输对js的思想,在js里面all is object,嗯就是什么都是对象--> function foo(){ //这一局就是 foo方法     getName = function(){     console.log(1);     }      return this;  //返回这个方法 就是返回foo } foo.getName= function(){console.log(2)} //这里你要把foo.getName看成一个正常的变量,实际上真正命名的时候没人                                         //会这样写 foo.prototype.getName = function(){   // prototype 属性使向对象添加属性和方法。这里就相当于更改方法了     console.log(3); }  var getName = function(){console.log(4)}  function getName(){       console.log(5) } foo.getName()/*2*/  //结果是2没毛病        getName()/*4*/  //结果是4也没毛病,你自己定义的就是var getName foo().getName()/*1*/ //这个是方法的getName(),没毛病 getName()/*1*/  //这里就有深究了,和浏览器对js的读取顺序有关系,这个地方自己百度,他应该是默认读取离上次执行                   //    最近的位置进行读取 new foo.getName()/*2*/   //没毛病 foo.getName你当成一个单词就行了,"."并不总是代表调用 new foo().getName()/*3*/   //创建一份方法对象,注意,这里是对象,看下我对 prototype 的解释你就明白了 new new foo().getName()/*3*/ // 你new n次也没啥用,只不过是把对象在new一次,即对象的对象 </script>
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript