JavaScript经典学习笔记总结

时间:2024.3.10

0、在Javascript中没有函数(重载)的概念

1、在js中为某个对象(控件)绑定事件通常可以采取两种手段:

         1》<input type=”input” onclick=”clickHandler()”>

         2> <input type=”button” id=”button1”>

           <script type=”text/javascript”

                   Var v = document.getElementById(“button1”);

                   v.onclick = clickHandler;

           </script>

2、有两种类型的Cookie

         1>持久性Cookie,会被存储到客户端的硬盘上。

         2>会话Cookie,不会存储到客户端的硬盘上,而是放在浏览器进程所处的内存当中,当浏览器关闭则该会话Cookie就销毁了。

3、在JavaScript中,函数(function)就是对象。

4、在JavaScript中有一个Function对象,所有自定义的函数都是Function对象类型的。

Function对象接收的所有参数都是字符串类型的,其中最后的一个参数就是要执行的函数体,而前面的参数则是函数真正需要接收的参数。

var add=new Function(“number”,”number1”,”alert(number + nubmer1)”);

add本身是Function函数对象的引用。                                                     

var add = new Function("m","n","var o = new Person('qqqqq','wwww');o.sayHello();");

        add("qweqwe","123123");

       

        function Person(username,password){

            this.username = username;

            this.password = password;

            Person.prototype.sayHello = function(){

                alert(this.username + "  " + this.password);

        }

                                                         }

5、在JavaScript中,每个函数都有一个隐含的对象arguments,表示给函数实际传递的参数。

         arguments.length,length属性表示实际给函数传递的参数个数。

         function add(){

                   if(1 == arguments.length){

                            alert(arguments[0]);

}else if (2 == arguments.length){

         alert(agruments[0] + agruments[1]);

}

}

6、 每个函数对象都有一个length属性,表示该函数期望接收的参数个数。他与函数的arguments不同,arguments表示函数实际接收的参数个数,函数名.length期望接收参数的个数。

7、JavaScript中有五种原始数据类型:Undefined,Null,Boolean,Number以及String

8、Undefined数据类型的值只有一个:undefined。

9、Null数据类型的值只有一个:null。

10、Boolean数据类型的值有两个:true和false

11、JavaScript中没有char字符数据类型,所以单引号和双引号都表示字符串数据类型

12、typeof是一元运算符,后跟变量的名称,用于获取变量的数据类型,其返回值有5个:undefined、boolean、number、string以及object。

验证变量是否为原始数据类型

var s = “hello”;//s是原始数据类型

alert(typeof s);

var s1 = new String(“123”);//对象数据类型

         alert(typeof s1);

13、在JavaScript中,如果函数没有声明返回值,那么会返回undefined。

14、null与undefined的关系:undefined实际上是从null派生出来的。

15、强制类型转换:在JavaScript中有3中强制类型转换,Boolean(value)、Number(value)、String(value)。

    var s = String(“hello”);

    alert(typeof s);//string

16、在JavaScript中,对于函数中定义的变量来说,加var表示局部变量,不加var表示的是全局变量。

17、在JavaScript中,所有的对象都是从Object对象继承来的。Object中的属性是不可枚举的,因此无法通过for……in语句得到其中的属性。

         var object = new Object();

         for(var I in object){

                   alert(i);

}

alert(object.propertyIsEnumerable(“prototype”));//判断对象是否有枚举的属性。

JavaScript中最顶层的对象是window对象,浏览器窗口对象。

for(var v in window){

         alert(v);//打印window的所有属性。

}

18、在Javascript中,可以动态添加对象属性,也可以动态删除对象属性。

var object = new Object();

alert(object.username);//undefined

//如果给对象添加属性并赋值共有两种方式(. 和[“”])。注意下::::

object.username = “shengsiyuan”;

object[“username”]=”shengsiyuan”;//有点像EL表达式。

alert(object.username);

//如果想要从对象中删除执行的属性,如下

delete object.username;//username属性从object对象中被删除。

alert(object.username);

    在JavaScript中定义对象的最常见的方式,也是开发中常用的。

         var object = {username : “zhangsan”,password : ”123”};

         alert(object.username + object.password);

小例子:

Jquery.ajax({

         url:elem.a,

    aysnc:false

});

19、在JavaScript中,数组中的sort方法来说,他会将待排序的内容转换为字符串(调用toString()方法),按照字符串的先后顺序进行排序。

         var array = new Array();

         array.push(1);

array.push(2);

alert(array.length);

最常用如下:

var array = [1,3,25];

array.sort();//如上说明,内部是转换为字符串排序的。

alert(array);

function compare(num,num1){

         var temp = parentInt(num);

         var temp1 = parentInt(num1);

         if(temp < temp1){

                   return -1;

}else if(temp == temp1){

         Return 0;

}else if(temp > temp1){

         Return 2;

}

}

array.sort(compare);//排序函数对象的引用。

alert(array);

//匿名函数

         function(){}

20、JavaScript中定义对象的几种方式(JavaScript中没有类得概念,只有对象)

         1》基于已有对象扩充其属性和方法

         var object = new Object();

    object.name = "zhangsan";

    object.sayName = function(name){

        this.name = name;

        alert(this.name);

        }

   

      object.sayName('lisi');

object.sayName(“lisi”);

2>工厂方式

}//工厂方式创建对象

function createObject(){

         var object = new Object();

         object.username = “zhangsan”

         object.password = “123”;       

         object.get = function(){

                   alert(this.username + “,” + this.password);

         }

         return object;

var object1 = new Object();

var object2 = new Object();

object1.get();

让一个函数对象被多个对象所共享,而不是每个对象拥有一个函数对象

    function get(){

    alert(this.username + this.password);

}

function createObject(username,password){

    var object = new Object();

    object.username=username;

    object.password = password;

    object.get = get;  

    return object;

}

var object = createObject("z","123");

var object2 = createObject("x","123");

object.get();

object2.get();

3》构造函数

无参数 或者 带参数

function Person(username,password){

         //在执行第一行代码之前,js引擎会为我们生成一个对象

         this.username=username;

         this.password=password;

         this.getInfo = function(){

                   alert(this.username + “,” + this.password);

}

//此处会有一个隐藏的return语句,用于将之前生成的对象返回。

}

4》使用Prototype(原型定义)创建对象

                           function Person(){

                             

                           }

                           Person.prototype.username = “zhangsan”;

                           Person.prototype.password = “123”;

                           Person.prototype.getInfo = function(){

                            Alert(this.username + “,” + this.password);

                           }        

var person = new Person();

var person1 = new Person();

person.username = “lisi”;

prson.getInfo();

prson1.getInfo();

单纯使用原型方式定义类无法在构造函数中为属性赋初值,只能在对象那个生成后再去改变属性值。

如果使用原型方式对象,那么生成的所有对象共享原型中的属性,这样一个对象改变了该属性也会反映到其他对象中。Array例子

P1          Person()          username=new Array(); 共享同一个引用的值。

                                         

P2                      Person()          password

不错的解决方案如下:

//使用原型方式 + 构造函数方式来定义对象,每个对象之间的属性互不干扰,两个对象之间共享同一个方法。

function Person(){

this.username = new Array();

this.password = “123”;
}

Person.prototype.getInfo = function(){

   alert(this.username + “,” + this.password);

}

var person = new Person();

var person1 = new Person();

person.username.push(“zhangsan”);

person.username.push(“lisi”);

person.getInfo();

person1.getInfo();

5》动态原型方式定义对象

在构造函数总通过标志量让所以对象共享一个方法,而每个对象拥有自己的属性。

Function Person(){

  This.username = “zhangsan”;

  This.password = “123”;

  If(typeof Person.flag == “undefined”){

     Alert(“invoked”);

     Person.prototype.getInfo = function(){

        Alert(this.username + this.password);

}

Person.flag = true;

}

}

Var p = new Person();

Var p2 = new Person();

p.getInfo();

p2.getInfo();

21、JavaScript中的继承

1》对象冒充

function Parent(username){

   this.username = username;

   this.sayHello = function(){

     alert(this.username);

}

}

function Child(username,password){

  //下面三行代码是最关键的代码

  this.method = Parent; //定义method属性,将Parent函数指定给method

  this.method(username);//Parent函数中的this指的是该Child对象

  delete this.method;

 

  this.password = password;

  this.sayWorld = function(){

   alert(this.password);

}

}

var parent = new Parent(“zhangsan”);

var child = new Child(“lisi”,”123”);

parent.sayHello();

child.sayHello();

child.sayWorld();

2》call调用方式

Call方法是Function对象中的方法,因此我们定义的每个函数都拥有该方法。可以通过函数名来调用call方法,call方法的第一个参数会被传递给函数中的this,从第2个参数开始,逐一赋值给函数中的参数。

//继承的第二种方式,call方法方式,Function对象中的方法。

function test(str){

  alertI(this.username + str);

}

Var o = new Object();

o.username = “zhangsan”;

test.call(o,”xxx”);

3》使用apply方式实现对象继承。

第一个参数是传入的对象,接着第二个参数传递的是数组,数组中传入参数。

4、使用原型链方式(prototype chain)   实现对象继承

   无法给构造函数传递参数

function Parent(){

}

Parent.prototype.hello = “hello”

Parent.prototype.sayHello=function(){

                           alert(this.hello);

}

function Child(){

}

Child.prototype.world = “world”;

Child.prototype.sayWorld = function(){

                  alert(this.world);

}

Child.prototype = new Parent();

var child = new Child();

child.sayHello();

child.sayWorld();

5、使用混合方式实现对象继承(推荐)

function Parent(hello){

    this.hello = hello;

}

Parent.prototype.sayHello = function(){

    alert(this.hello);

}

function Child(hello,world){

    Parent.apply(this,[hello]);

    this.world = world;

}  

Child.prototype = new Parent();

Child.prototype.sayWorld = function(){

    alert(this.world);

}

var child  = new Child("Hello","World");

child.sayHello();

child.sayWorld();

更多相关推荐:
javascript学习总结

javascript学习总结1JavaScript中的对象分为3种1JavaScript的内置对象常用的有DateArrayStringMath对象这些都是经常会用到的一定要掌握好2文档对象模型Document...

javascript学习总结

脚本语言:1、介于html与java,php之间的语言,能力比java,php弱,比html强,单独使用起不了大作用,需要配合其他语言发挥其作用;2、3、4、5、javascript有自己的变量,函数以及控制语…

javascript学习总结

一JavaScriptJavaScript被设计用来向HTML页面添加交互行为JavaScript是一种脚本语言脚本语言是一种轻量级的编程语言JavaScript由数行可执行计算机代码组成JavaScript通...

Javascript学习总结

JavaScript学习总结1234567JavaScript概述3数据类型3数字3字符串3布尔类型4函数4对象4a创建JavaScript对象的两种语法4b自定义对象类型58数组59变量510基本类型和引用类...

JavaScript考点总结

Netscape公司为了扩展其浏览器的功能开发了一种名为LiveScript的脚本语言Sun公司联合宣布把其更名为Javascript欧洲计算机制作商协会ECMA形成ECMA262标准定义了ECMAScript...

JavaScript学习总结

JavaScript学习总结由于以前JavaScript用的比较的少所以对JavaScript的认识非常的肤浅这周看了蛮多关于javascript的书和文档对JavaScript终于有了一些初步的认识总结一下希...

javascript学习总结

Javascrip基础与实践教程电子工业出版社一javascrip语言概述1ECMAScript是许多软件厂商对JavaScript的统一标准2服务器端和客户端JavaScript共享相同的核心语言但也有些不同...

Javascript脚本总结

JavaScript脚本总结JavaScript的注意事项JavaScript是一种解释型的基于对象面向客户端的脚本语言该语言不能来编辑独立运行的应用程序必须利用宿主软件来运行例如IE浏览器等DHTM是通过Ja...

javascript学习

1javascript有个事件机制可以在网页上发生某个事件时才触发某一段javascript代码2onload事件在网页载入完毕后触发设定ltbodygt标签的onload属性即可对onload事件有所响应3j...

JavaScript基础总结

JavaScript基础总结,内容附图。

总结常用JavaScript语法107条

总结常用JavaScript语法107条文章总结了JS中常用的语法希望能对大家提供帮助1输出语句documentwritequotquot2JS中的注释为3传统的HTML文档顺序是documentgthtmlg...

Javascript经典小技巧总结

1documentwritequot输出语句2JS中的注释为3传统的HTML文档顺序是documentgthtmlgtheadbody4一个浏览器窗口中的DOM顺序是windowgtnavigatorscree...

javascript学习总结(21篇)