[JavaScript] 悟透 JavaScript

 

     一直理解我们程序员到底是干什么的,码农吗?只是在那里不停的码字吗?我不认为,除非你是很低端的智慧copyAndPaste的人除外,我觉得我们在建造大楼,这也符合我们所谓工程师的叫法,好吧扯远了,谈谈JavaScript语言的理解。

 
      我们既然是在建造大厦,那么久需要物质,还需要将这些物质整合起来的各种工具,那么这里的物质就是编程里的“数据”,所需要的那些工具就是我们的代码,如何将代码和数据很好的融合起来,让大厦运转起来,这就需要每个人的思想,在程序里指的是代码逻辑。(这里的比喻不太贴切)
 
      开讲JavaScript,以下简称JS,先说说JS语言里的类型。JS有这么几种类型,undifined,null,boolean,number,string五中简单的类型,还一种较为复杂的类型object,怎么理解这五中类型呢,可以将之前的五中简单的类型理解为中国古代的五行思想,所谓金木水火土,再讲object理解为物质,一切类型皆object,类型又细分为五中简单的类型。这是一种将五中简单类型横向的理解思想,也可以纵向理解,undifined :代表一起未知的事物,啥都没有,代码更是无法处理了,再者null :有那么一个概念,但没有实质的内容填充物。但可以用代买来处理了。再者boolean:概念更加明确,也有实质的内容了,那就是是与非,并且只有是与非,可以控制代码流程了。再者number :线性事物,大小次序分明,多而不乱,便于代码进行批量处理。最后string:已经上升到人类可以理解的语言了,更符合人类的思想意图了。发现没有,这是一个递进的过程。这就是我对JS类型的理解。
 
      再来说说JS之所以没有类,JS没有类吗?只是你没有体会到JS类的概念,JS语言已经将对象和类融合了,JS没有了类的概念才让这个语言产生了其他语言所没有的活力。
 
       还有就是JS诡异的函数的概念,为什么称之诡异呢,来看看下面的代码及输出:
       代码段 I:
   var myfunc = function ()
        {
            alert("hello");
        };
    myfunc(); //第一次调用myfunc,输出hello
    
    myfunc = function ()
        {
            alert("yeah");
        };    
    myfunc(); //第二次调用myfunc,将输出yeah
      代码段 II:
  function myfunc ()
    {
        alert(
"hello");
    };
    myfunc(); 
//这里调用myfunc,输出yeah而不是hello
    
function myfunc ()
    {
        alert(
"yeah");
    };    
    myfunc(); 
//这里调用myfunc,当然输出yeah
      代码段 III:
<script>
    function myfunc ()
    {
        alert(
"hello");
    };
    myfunc(); 
//这里调用myfunc,输出hello
</script>
<script>
    function myfunc ()
    {
        alert(
"yeah");
    };    
    myfunc(); 
//这里调用myfunc,输出yeah
</script>
诡异原因目前还没有具有说服力的解释,提示是,可能和函数复制给变量,以及JS执行引擎有关,有待后面能力更强了再解决。
 
JS的函数同时具有对象的所有属性,只是在声明的时候多一个“()”符号,这是便于执行而已,对象是无法执行的。JS函数中的 this 指的是该函数所在空间,被复制带对象的某个属性是,它指的就是这个对象,没有被赋值时,指的是浏览器的全局变量 window。JS的构造函数创建方法如下:
  function SayHello()     //先定义一份SayHello函数代码
    {
        alert("Hello, I'm " + this.name);
    };

function Person(name)   //带参数的构造函数
    {
this.name = name;   //将参数值赋给给this对象的属性
        this.SayHello = SayHello;   //给this对象SayHello方法赋值为前面那份SayHello代码。
    };

var BillGates = new Person("Bill Gates");   //创建BillGates对象
    var SteveJobs = new Person("Steve Jobs");   //创建SteveJobs对象
    
    alert(BillGates.SayHello == SteveJobs.SayHello); //显示:true
 
接下来再说说JS的对象,创建对象的方式有很多,例如:JSON方式的,new() 形式的。
 
 
需要精读这篇文章:http://www.cnblogs.com/leadzen/archive/2008/02/25/1073404.html
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
posted @ 2019-04-30 16:00  NCat  阅读(134)  评论(0)    收藏  举报