`
xiaotao.2010
  • 浏览: 216892 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

JS 笔记--基础篇

 
阅读更多

 

浅谈JavaScript的语言特性

一片很好的JSer入门和复习查阅的帖子;

-------------------------------------------------------------------------------------------------------------------------------

JS - OO思想

ECMA-262 定义对象为:“无序属性的集合,其属性可以包含基本值、对象或者函数。”

严格来讲,这就相当于说对象是一组没有特定顺序的值。对象的每个属性或方法都有一个名字,而且每个名字都映射到一个值。正因为这样,我们可以把ECMAScript的对象想象成散列表:无非就是一组名值对,其中值可以是数据或函数。

 

1、特殊事件

<!-- 此为浏览器出发基于 javascript 的引擎,来执行js程序 -->
<a href="javascript:alert('helloWorld!')"> 点我</a>

<!--该为基于事件,基于onclick事件  -->
<a href="1.html" onclick="alert('helloWorld!')"> 点我</a>

 

2、Js声明变量

  <script type="text/javascript" >
        var i = 100; //此为Js声明的若变量
        ii = 100; // Js中不用“var”声明变量,Js则认为此为全局变量,
                  //除非是你想使用全局变量,否则不建议这样使用,避免Js程序变量冲突
    </script>

 

3、理解函数传入的参数

 

<script type="text/javascript" >

    /* ECMAScript函数的参数:函数不介意传递多少个参数进来,哪怕不定义传入参数,函数也能已数组形式接受参数
     * 通过arguments[i] 来获取传入参数。
     */
    function clickMe() {
        alert('ClickMe say : '+arguments[0]+' ; '+arguments[1]);
    }

       
    </script>


 <div>
    <input type="button" name="点我22" value="点我22" onclick="clickMe('你好','你不好')" />
    </div>

 例如:

<body>
<script type="text/javascript" > 
function clickMe(a) {
        alert('ClickMe say : ' + a + ' ; ' + arguments[0]);
        
    }
</script>

    <input type="button" name="点我22" value="点我22" onclick="clickMe('你好','你不好')" />

</body>

 

4、JS中没有重载,遇到相同函数名不同参数时,后面的函数回覆盖前面的函数。

 

5、with(location)和try...catch(e)

<head runat="server">
<script type="text/javascript" >

    function clickMe() {
        /* 引用类型 */

        /* 使用Object引用类型创建对象 */
        var person = new Object();
        person.name = "cht";
        person.age = 24;

        /* 使用“对象字面量”表示法,创建对象 */
        var person2 = {
            name  : "wjh" ,
            age : 24
        };
        alert(person + " ; /n/r" + person2);
    }

    </script>
</head>
 

 

 6、引用类型 

 

<head runat="server">
<script type="text/javascript" >
    debugger; //断点调试

     function clickMe() {
        /* 引用类型 */

        /* 使用Object引用类型创建对象 */
        var person = new Object();
        person.name = "cht";
        person.age = 24;

        /* 使用“对象字面量”表示法,创建对象 */
        var person2 = {
            name  : "wjh" ,
            age : 24
        };

        /*   var person = new Object()等于var person = {}*/
        alert(person + " ; /n/r" + person2);
    }

    </script>
</head>

 

7、Array类型

<head runat="server">
 <script type="text/javascript" >
    debugger; //断点调试

     function clickMe() {
        /* Array 类型 */
        /* Array对象创建*/

        //1、普通
        var person = new Array();

        //2、2B
        var person = new Array(20);

        //3、文艺
        var person = new Array("red","blue","green");

         //4、NB
        var person = ["red","blue","green"];
    </script>
</head>

 

 

 8、Js特殊对象arguments和this

<head runat="server">
 <script type="text/javascript" >
 

    function clickMe() {
        alert(factorial(10));
    }
    /*
     *JavaScript中两个特殊的对象:arguments和this
     * this : 不解释了
     * arguments :只当前函数传递的参数,arguments已数组的方式存在;
     * arguments中有个特殊属性 callee,它指向拥有这个arguments函数的指针。
     *
    */
    function factorial(num) {
        if(num <= 1){
            return 1 ;
        } else {
            alert(num);
            return arguments.callee(num - 1); //arguments.callee(num -1)执行当前arguments的函数,传入参数num-1(获取对当前执行的函数的引用)
        }
    }
    </script>
</head>

 

 9、ECMAScript -262面向对象,对象实例化(工厂方法,构造函数、原型模式),hasOwnProperty(),in的用法

 

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript">
        function clickMe() {
            /* 1、【弃用】实例化工厂方法对象 */
            //debugger;
            /* 2、实例化构造函数对象 */
            var person1 = new Person("tom", 12, "F");
            person1.sayName();

            /* 3、【常用】实例化原型模式对象 */
            var superPerson = new SuperPerson();   
            superPerson.sayName();
            /* PS: 实例拥有自己的属性存储空间,
             * superPerson.name = "11",屏蔽SuperPerson原型中的name属性,
             * 原型中的SuperPerson.prototype.name = "jenny",始终保存,
             * if (superPerson.hasOwnProperty("name")){//true 为实例中存在name属性}
             * if ("name" in SuperPerson){//true 为原型中存在name属性}
             */
            
            
           
        }

        /* 构造函数,注意所有使用new的函数都可以叫做构造函数,构造函数的首字母要大写
         * 如下: function Person(name,age,sex)中的Person,P需要大写。
        */
        function Person(name,age,sex) {
            this.name = name;
            this.sex = sex;
            this.age = age;
            this.sayName = function () { //定义函数,常犯错误 this.sayName = new function(){};
                alert(this.name);
            };
        }

        /* 原型模式:创建的每一个函数都有一个prototype(原型)属性,这个属性是一个“对象”,它的“用途”
         * 是包含可以有特定类型的所有实例共享的属性和方法。
         * 按字面意思来理解,那么prototype就是通过调用构造函数而创建的那个对象的原型对象。 
        *
        */
        function SuperPerson() {
        }

        /* 普通写法 */
        SuperPerson.prototype.name = "jenny";
        SuperPerson.prototype.age = 12;
        SuperPerson.prototype.sex = "M";
        SuperPerson.prototype.sayName = function () {
            alert(this.name);
        };

         /*  对象字面量 写法 */
        SuperPerson.prototype = {
            constructor: Person , //将构造器指向Person
            name : "jenny01",
            age : 1201,
            sex : "M01",
            sayName: function () {
                alert(this.name);
            }
        };
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <input type="button" name="点我 " value="点我 " onclick="clickMe()" />
    </form>
</body>
</html>

 

  (9、补充)

   组合使用构造函数模式和原型模式,ECMAScript中最常用的使用方法:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript">
        function clickMe() {
    
            var person1 = new Person("tom1", 12, "F");
            person1.sayFriends();
            var person2 = new Person("tom2", 122, "F2");
            person2.friends.push("3");
            person2.sayFriends();
        }

        /* 组合使用构造函数模式和原型模式,目前ECMAScript中广泛使用*/

        /*
        * 将所有属性写在构造函数模式中,构造函数模式中,它的每个属性和方法都无法得到复用
        */
        function Person(name,age,sex) {
            this.name = name;
            this.sex = sex;
            this.age = age;
            this.friends = ["1111", "2222"];
        }

        /*
        * 将所有方法写在原型模式中,prototype属性来指定哪那些应该共享的属性和方法。
        */
        Person.prototype = {
            constructor: Person,
            sayFriends: function () {
                var friends = "[";
                for (var i in this.friends) {
                    friends = friends + this.friends[i].valueOf() + " , ";
                }
                friends = friends + "]";
                alert(friends);
            }
        };
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <input type="button" name="点我 " value="点我 " onclick="clickMe()" />
    </form>
</body>
</html>

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    前端学习笔记-黑马程序员JS

    "前端学习笔记-黑马程序员JS" ...这篇前端学习笔记涵盖了 JavaScript 的基础知识,包括变量、数据类型、运算符、流程控制、数组、函数、对象、内置对象和 Web APIs 等知识点,为学习 JavaScript 提供了系统的指导。

    李立超JavaScript基础篇笔记

    JavaScript,简称JS,是由Brendan Eich在1995年创造的一种高级编程语言,最初目的是为了增强网页的交互性,特别是在前端进行表单验证。...这些类型构成了JS编程的基础,理解和掌握它们是学习JavaScript的第一步。

    JavaScript高级程序设计2,学习笔记---第一篇

    这篇学习笔记将带你探索JavaScript的核心概念,包括变量、数据类型、控制流、函数、对象和类等,这些都是构建复杂应用程序的基础。 首先,我们要了解JavaScript的基础语法。在JavaScript中,变量是存储数据的容器,...

    DWR学习笔记-HelloWorld篇

    【标题】:“DWR学习笔记-HelloWorld篇” 在IT领域,DWR(Direct Web Remoting)是一个开源的Java框架,它允许JavaScript在浏览器端直接调用服务器端的Java方法,实现了网页与服务器的实时交互,类似于Ajax技术,但...

    javascript入门-基础语法笔记整理.md

    一个周前自己较系统地学完 javascript,但老感觉自己对基础语法部分的掌握不够扎实,javascript 的基础语法内容实在是丰富灵活,但这部分是进大厂必不可缺的知识,于是花了不少时间耐心整理了这篇笔记,以此夯实基础...

    微信小程序demo:HotApp云笔记 - 精品开源demo-基于免费API.rar

    本篇将围绕“HotApp云笔记 - 精品开源demo”这一项目,深入解析如何利用微信小程序框架,结合免费API,构建一个实用的云笔记应用。 一、微信小程序基础概念 微信小程序是一种无需下载安装即可使用的应用,它实现了...

    jquery学习笔记--1

    本篇笔记将深入探讨jQuery的基础知识,包括其核心概念、选择器、DOM操作、事件处理、动画效果以及Ajax应用。 ### 1. jQuery核心概念 jQuery的核心思想是“write less, do more”。它通过封装JavaScript的一些常见...

    JavaScript李立超基础篇笔记.docx

    总的来说,李立超的JavaScript基础篇教程涵盖了语言的基础知识,包括其历史、特点、基本语法、数据类型、变量和标识符的使用,以及代码编写的位置和方式,是学习JavaScript入门的宝贵资料。通过深入理解和实践这些...

    【基础篇】第02篇:PHP代码审计笔记--跨站脚本漏洞1

    2. 设置Cookie的HttpOnly属性:当设置Cookie时,加上HttpOnly参数可以防止JavaScript访问Cookie,这能降低Cookie被XSS攻击窃取的风险。HttpOnly在较旧的IE6及以后版本中都得到了支持,但并不能完全防止所有类型的XSS...

    Gwt-ext学习笔记之基础篇

    ### Gwt-ext学习笔记之基础篇 #### 一、安装CypalStudio工具 为了能够开始Gwt-ext的学习之旅,首先需要确保开发环境已经搭建好。CypalStudio是一款非常实用的工具,它能帮助开发者更高效地进行GWT项目的开发。 1....

    ExtJS笔记---Grid实现后台分页

    这篇“ExtJS笔记——Grid实现后台分页”探讨了如何在ExtJS的Grid组件中实现高效的后台分页功能。 后台分页是一种常见的数据处理策略,特别是在大数据量的情况下,它将数据分批加载,避免一次性加载所有记录导致的...

    Gwt-Ext学习笔记之基础篇- www.hxiaseo.cn技术网站

    标题中的"Gwt-Ext学习笔记之基础篇"指的是关于Gwt-Ext的初级教程,这是一种基于Google Web Toolkit (GWT) 的扩展库,用于构建富互联网应用程序(RIA)。Gwt-Ext提供了丰富的用户界面组件,使得开发者可以利用Java语言...

    vtk学习笔记 ---绘制等值线

    本篇文章将深入探讨如何使用`VTK`来绘制等值线,这是一个用于展示数据分布和特征的重要工具。等值线是连接相同值点的曲线,常用于气象、地理、物理等领域表示连续变量的分布。 首先,`PolygonContourDemo.java`和`...

    php笔记-欢迎增加

    本篇PHP笔记涵盖了从基础到进阶的知识点,适合初学者和有一定基础的开发者参考学习。主要内容包括简单的“Hello World”示例、网页内容抓取技巧、编码转换方法、缓存逻辑设计、数据解析方式、Ajax与PHP之间的交互、...

    JS笔记(2014-11-22).docx

    总的来说,这篇JS笔记涵盖了JavaScript基础中的窗口操作、用户交互和DOM操作。对初学者而言,理解并掌握这些基本概念是进一步学习更复杂JavaScript技术的基础,例如AJAX异步通信、DOM遍历和操作、以及复杂的用户交互...

    JavaScript-学习笔记.docx

    这篇学习笔记主要涉及了JavaScript的基础概念和一些高级特性,包括预编译、作用域、函数、对象原型、原型链、函数调用方式(如call、apply)、继承模式、对象克隆、数组操作、自定义类型判断以及错误处理机制。...

    EXT学习笔记-项目应用实践

    这篇EXT学习笔记主要涵盖了EXTJS中面向对象编程的一些关键概念和实践,包括命名空间、类定义、构造函数、属性与方法的访问控制(私有和公有)、静态属性与方法以及继承机制。 1. **命名空间**:在EXTJS中,命名空间...

    web学习笔记 —— javascript基础

    这篇“web学习笔记——javascript基础”将带你走进JavaScript的世界,理解其基本概念和常用语法。 JavaScript语法基础: 1. 变量:在JavaScript中,变量用于存储数据。声明变量使用`var`关键字,例如`var myVar = ...

Global site tag (gtag.js) - Google Analytics