• JS基础之对象


    JS中一切皆为对象,这是一句常说的话。了解JS对象,从这句话开始吧。JS中的基本数据类型如number,bool,字符串,数组,null,undefined等等都是对象。

    对象的本质:

    带有属性和方法的特殊数据类型,而每个属性或者方法又可看做是一个键值对,因此可以这样定义:对象是一系列无序键值对的集合

    在JS中对象分为两种:

    • JS的内建对象,如:string,Date,Array等
    • 你自己创建的对象

    JS中如何创建自己的对象:

    1 对象初始化器,这种方式最为简单暴力,直接一系列明显的键值对集合。

        var obj={
            name:'PengL',
            age:100,
     	func:function()
    	{
    		alert("I am "+obj.name+" and I am  "+obj.age);
    	}
        };
    

    2 构造函数

        function person(name,age){
    	this.name=name;
    	this.age=age;
    	this.func=func;
    	function func()
    	{
    		alert("I am "+this.name+" and I am  "+this.age);
    	}
        }
        var obj=new person("PengL",100);
    

    说明:第一种方法是直接创建的一个对象的实例,第二种是通过new构造函数的方式来创建一个对象,并且传入不同的参数,这样对象对应的属性值就不一样。不过要注意的是不要忘了new,不然就是把一个普通函数赋给了obj,并且这时的this指向也是混乱的了。关于this指向的问题可以参考一下作者的另一篇博客javascript进阶之this

    对于构造函数创建对象的方法我还想再进一步介绍一下

    一般在真实的项目中上面demo的写法其实是不合理的。最好的方式是原型和构造函数混用的方式来做,比如上面的可以改成这样

        function person(name,age)
        {
    	this.name=name;
    	this.age=age;	
        }
        person.prototype.func=function(){
    		alert("I am "+this.name+" and I am  "+this.age);
        };
    

    这种方式不仅结构清楚,最重要的是还节约了内存,在对象的原型上创建的方法,那么这个方法就是通过该构造函数所创建的所有对象共有的方法了。各个对象有自己独有的name,age属性,有共有的func方法。如果有对原型不熟悉的同学可以看看这篇廖雪峰大神的作品廖雪峰


    最后再做一下总结吧,加深一下印象

    • JS中一切皆对象
    • 对象本质是一系列无序键值对的集合
    • 创建对象有两种常见的方法,初始化器和构造函数(不同情况来进行选择,并非总是第二种最好)
  • 相关阅读:
    面向对象编程听高翔“面向对象与生活”有感
    .Net调试技巧
    关于排序(简单)
    Http Handler由IIS6到IIS7的使用问题
    也谈【关于 京东员工被离职】另一个角度
    poj1062昂贵的聘礼
    poj1125 Stockbroker Grapevine
    poj1860 Currency Exchange
    poj1258 AgriNet
    poj2485 Highways
  • 原文地址:https://www.cnblogs.com/PengL-Net/p/5817242.html
Copyright © 2020-2023  润新知