zoukankan      html  css  js  c++  java
  • js学习笔记(七)对象

    1、对象的创建

      通过new关键字,如 var a=new Object();   //创建了一个空对象

      通过对象直接量,如 var a={};     //同样是创建了一个空对象

    通过对象直接量创建时还可以初始化对象,如 var a={x:100,y:”hello”}

    对象的属性可以动态创建或添加,如  a.z=10000  //给对象a创建了一个新属性z

    2、构造函数

    构造函数可以理解为其他编程语言中的类,在实例化这个类时,要使用new运算符。

    function Rectangle(w,h){ 

                 this.width=w;    //类的属性,this指代的是实例化时的那个具体对象

                 this.height=h;

                 this.area=function(){return this.width*this.height} //类的方法  

                    }

    var a=new Rectangle(2,3);  //实例化一个对象,括号中的参数可以初始化这个对象

    var b=new Rectangle(4,6); //实例化另一个对象,用的是同一个类(也就是构造函数)

    3、对象的方法

    方法其实就是一个函数,区别在于方法可以使用this关键字,而普通函数一般不使用。

    在这里的this关键字指代的是调用这个方法的对象(当然前提是这个对象有这个方法),因此,可以理解为函数中(不管是方法函数还是普通函数)一旦有this关键字,那么它指代的就是调用这个函数的对象。其实我们可以把普通函数看成是windows全局对象的方法,因此,作为普通函数运行时(即不是某个对象(windows对象除外)的方法)期中的this代表的就是windows对象。

    4、原型对象和继承

      每一个对象都有原型对象,对象会继承其原型对象的所有属性或方法。对象原型是由构造函数定义的。对象的原型对象用 a.prototype来引用(a是一个构造函数)

    当在读对象a的某个属性时,系统会首先检查a有没有定义这个属性,如果没有则检查其原型(即a.prototype)中有没有定义这个属性。当改变a对象中没有定义而其原型中定义了的某个属性时(如a.x中的x属性是a对象的原型中定义的,a中并没有直接定义),如果改变a.x的值,并不会影响到其原型中的x属性的值(因为如果原型中的值一旦改变,则其影响的就可能会是很多的对象了,而不仅仅是当前这一对象),所以这时系统会为a对象自动添加一个x的属性(就相当于覆盖掉了其原型对象中的x属性的值)。

    即使属性在被创建之后才添加到它的原型对象中,对象也能够继承这些属性。

    假设我们定义了一个构造函数a(),那么它的原型对象就是a.prototype,我们可以为他添加属性或方法,比如a.prototype.x=10000,则所有用构造函数a实例化的对象都可以继承到x这个属性。

    实际上构造函数和对象原型是模拟了其他编程语言中的类和继承

    5、原型和内部类

    不只是用户定义的类具有原型对象,像String、Date这样的内部类同样具有原型对象,你也可以给它们赋值,例如下面的代码定义了一个新方法,它适用于所有String对象。

      String.prototype.a=function(){…} //为String的原型对象定义了一个方法

    var m=”hello”; //创建一个字符串

    m.a();  //该字符串继承了a()方法

    6、命名类(在js中即为构造函数)时以大写字母开头,实例化一个类对象时以小写字母开头。

    7、作为关联数组的对象

    对象的属性不仅可以用点运算符来引用,也可以以数组的形式来引用,如下两个是等价的:

      a.x

      a[“x”]

    以数组的形式来引用对象的属性更加灵活,因为[]中的属性名是一个字符串类型,所以可以用一个变量来代替,也就是说可以通过改变变量的值动态的引用不同的对象属性

    8、对象的属性和方法

          每个对象都有constructor属性,用来表示实例化该对象的构造函数,例如,构造函数Complex()创建了一个对象o,那么属性o.constructor表示的就是Complex

         对象的toString()方法返回的是一个字符串,该字符串代表了调用它的对象的类型或值,当需要把一个对象转化成字符串时,就会调用这个方法。不同的对象用toString()返回的内容不同,如数组得到的是一个数组元素列表,函数得到的是该函数的原代码。

  • 相关阅读:
    架构中的技术性解决难题
    设计一个js的架构第二篇
    DOCTYPE 严格模式与混杂模式
    架构中的技术性解决难题之解决篇
    css常用页面布局
    记录一个css的综合运用
    写在立春
    Win7重装后,如何删除cygwin目录?
    重读《The C Programming Language》
    [分享]多个选项卡切换效果
  • 原文地址:https://www.cnblogs.com/2050/p/1744873.html
Copyright © 2011-2022 走看看