JS基础知识(-)

1 , call方法: 

语法:call([thisObj[,arg1[, arg2[,   [,.argN]]]]]) 
定义:调用一个对象的一个方法,以另一个对象替换当前对象。 
说明: 
call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。 
如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。
 function Class1()
{
    this.showTxt = function(txt)
    {
        alert(txt);
    }
}

function Class2()
{
    Class1.call(this);
}

var c2 = new Class2();

c2.showTxt("cc"); 
这样 Class2 就继承Class1了,Class1.call(this) 的 意思就是使用 Class1 对象代替this对象,那么 Class2 中不就有Class1 的所有属性和方法了吗,c2 对象就能够直接调用Class1 的方法以及属性了,执行结果就是:alert(“cc”);

对的,就是这样,这就是 javaScript 如何来模拟面向对象中的继承的 
 
在node.js中的常见的代码:
events.EventEmitter.call(this);
 
2,给Array加方法
 Array.protoType.indexOf = function(Object){  
          for(var i = 0;i<this.length;i++){  
             if(this[i] == Object){  
                return i;  
         }  
     }

3,关于大括号

  { } 大括号,表示定义一个对象,大部分情况下要有成对的属性和值,或是函数。{ } 大括号,表示定义一个对象,大部分情况下要有成对的属性和值,或是函数。

  如:var LangShen = {"Name":"Langshen","AGE":"28"};

  上面声明了一个名为 LangShen 的对象,多个属性或函数用,(逗号)隔开,因为是对象的属性,

  所以访问时,应该用.(点)来层层访问:LangShen.Name、LangShen.AGE,当然我们也可以用数组的方式来访问,如:LangShen["Name"]、LangShen["AGE"],结果是一样的。

该写法,在JSON数据结构中经常用,除此之外,我们平时写函数组的时候,也经常用到,如:

  

var LangShen = {
       Name = function(){
                  return "LangShen";
                   },
      Age = function(){
                 return "28";
                 }
}
调用方式差不多,因为是函数组,所以要加上(),如:alert( LangShen.Name() );
 
 
原文地址:https://www.cnblogs.com/killbug/p/3436242.html