Java web(2012/2/23)

 1、Javascript动态的为一个对象添加属性和删除属性:

       var object = new Object();

       object.name = "zhangsan";  //为object对象添加name这个属性

       delete object.name;         //删除object对象的name属性

2、Javascript的另一种定义对象的方式(最常见方式):

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

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

4、JavaScript中定义对象的几种方式:

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

           var object = new Object();

           object.name = "zhangsan";
           object.sayName = function(name)
           {
                   this.name = name;
                   alert(this.name);
           }

        2)工厂方法:     

           function createObject(username, password)
          {
                 var object = new Object();
                 object.username = username;
                 object.password = password;

                 object.get = function()
                 {
                         alert(this.username, ",", this.password);
                 }
                 return object;
          }

          var object1 = createObject("zhangsan", 123);
          var object2 = createObject("lisi", 123);

          object1.get();
          object2.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;
}

        3)构造函数方式

         

function Person(username, password)
{
    //在执行第一行代码前,js引擎会为我们生成一个对象
 this.username = username;
 this.password = password;

 this.getInfo = function()
 {
  alert(this.username);
  alert(this.password);
 }

 //此处有一个隐藏的return语句,用于之前生成对象的返回
}
 
var person = new Person("zhangsan", "123");
person.getInfo();

         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();
person.getInfo();

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


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

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

         5)动态原型方式:在构造函数中通过标志量让所有对象共享一个方法,而每个对象拥有自己的属性

5、Javascript中的继承

1)对象冒充:可以实现多继承

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

3)apply方式方法:apply() 方法有两个参数,用作 this 的对象和要传递给函数的参数的数组

4)原始链方式(无法给构造函数传递参数):调用 ClassA 的构造函数,没有给它传递参数。这在原型链中是标准做法。要确保构造函数没有任何参数。

与对象冒充相似,子类的所有属性和方法都必须出现在 prototype 属性被赋值后,因为在它之前赋值的所有方法都会被删除。为什么?因为 prototype 属性被替换成了新对象,添加了新方法的原始对象将被销毁。

5)混合方式(推荐使用)

6、Ajax(Asynchronous JavaScript and  XML),一步的JavaScript与XML。Ajax中有一个重要的对象时XMLHttpRequest。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值