zoukankan      html  css  js  c++  java
  • 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中一切皆对象
    • 对象本质是一系列无序键值对的集合
    • 创建对象有两种常见的方法,初始化器和构造函数(不同情况来进行选择,并非总是第二种最好)
  • 相关阅读:
    Sprng Data JPA与hibernate的关系
    Exception in thread "main" java.io.FileNotFoundException: d:xxx.txt (拒绝访问。)
    Telnet测试BIO Socket
    计算机网络篇
    Postman测试接口发现时间少8个小时?添加这两行代码就解决!
    匿名内部类
    解决线程安全的三种方法
    equals和hashcode的区别
    postman测试springsecurity 登录鉴权,获取Cookie后进行其他接口测试
    (链表)求相交链表交点
  • 原文地址:https://www.cnblogs.com/PengL-Net/p/5817242.html
Copyright © 2011-2022 走看看