JavaScript 构造函数对象

1.什么是对象 (这里并不是男女朋友的那个对象)

 现实生活中:万物皆对象,对象是一个具体的事物 ,看得见摸得着的实物。例如,一本书、一辆汽车、 一个人
可以是“对象”,一个数据库、一张网页, 一个与远程服务器的连接也可以是“对象”。 对象一定是一个具体的事物。
在JavaScript中,对象是一组无序的相关属性和方法的集合,所有的事物都是对象,例如字符串、数值、数组、函数等。
对象是由属性和方法组成的。
  ●属性:事物的特征,在对象中用属性来表示(常用名词)
  ●方法:事物的行为,在对象中用方法来表示(常用动词)

2.那为什么需要对象呢?

 保存一个值时,可以使用变量,保存多个值(一组值 )时,可以使用数组。如果要保存一个人的完整信息呢?
例如 保存在数组中
  var arr =[‘无限’,‘男’,128,154];
  有局限性 无法让别人很清晰的了信息
JS中的对象表达结构更清晰,更强大。个人信息在对象中的表达结构如下:
  无限.姓名= ‘无限’;
  无限.性别= ‘男’;
  无限.年龄= ‘18’;
  无限.身高= ‘154’; //信息都是我瞎写的 不要在意
变为代码就成了
  person.name= ‘无限’;
  person.sex= ‘男’;
  person.age= ‘18’;
  person.height= ‘154’;
对象可以更加直观 更加清晰的 保存 当然这只是对象的 好处之一

3.创建对象的三种方式

 在JavaScript中,现阶段我们可以采用三种方式创建对象( object) :
●利用字面量创建对象
  对象字面量:就是花括号{}里面包含了表达这个具体事物(对象)的属性和方法。

    //字面量创建对象  {}
    var obj = {};  //这就是个空的对象

 //创建简单的对象
    var wuXian = {
        //属性 的写法
        uname:'无限',
        age:18,
        sex:'男',  //{}中采用 键 值 对 形式表示 键 就是uname,age等等,值就是冒号后面的 值可以是任何类型的 对就是两者对起来 中间加冒号哦 每一对之间用逗号隔开
        //方法
        sayHei:function(){
            console.log('小黑');
        }
    };
    // (1) 里面的属性或者方法我们采取键值对的形式键属性名;值属性值
    // (2) 多个属性或者方法中间用逗号隔开的 最后一个可以不用写 
    // (3) 方法 冒号后面跟一个匿名函数

●利用new Object创建对象

	//利用new Object
     var obj = new Object();//一个空的对象 注意 o 大写
    //给使用new object 创建的对象添加属性
        obj.uname = '风息';
        obj.age = 18;
        obj.sex = '男';
    //添加方法
    	obj.sayHi = function(){
			console.log('Hi~~');
		}
	//我们是利用等号=赋值的方法添加对象的属性和方法
	//每个属性和方法之间用分号结束

●利用构造函数创建对象
 构造函数创建对象和前两种方法 不同点在于 前两个只能一次创建一个 如果要创建多个相同的对象 里面只有值不一  样但代码都一样 比如注册用户 难道来一个用户就要加一遍相同的代码?太麻烦了也不现实
  因此我们可以利用函数的方法 重复这些相同的代码 而这个函数就叫 构造函数
  构造函数就是把我们对象里面些相同的属性和方法抽象出来封装到函数里面
  构造函数:是一种特殊的函数,主要用来初始化对象,即为对象成员变量赋初始值,它总与new运算符一起使用。我们可以把对象中一些公共的属性和方法抽取出来 ,然后封装到这个函数里面。

    //构造函数语法格式
    function 构造函数名(){
        this.属性 =; //this 代表当前属性
        this.方法 = function(){

        }
    }
    //调用构造函数
    new 构造函数名();
		//例子
//注意构造函数名字首字母大写	函数的形参
    function User(uname,qq,passwd,hobb){
    	//公共属性
    	//我们的属性和方法前面必须添加this
        this.uname = uname ;
        this.qq =   qq ;
        this.passwd = passwd ;
        //方法
        this.hobby = function(hobb){
			console.log(hobb)
		}
    } 
   //对象 		    	实参
   var qiaoHu = new User('巧虎',1008611,'11686'); //调用函数返回的是一个对象
   	//构造函数不需要return就可以返回结果
		console.log(qiaoHu.uname);
    	console.log(qiaoHu['qq']);
    	console.log(qiaoHu.passwd);
    	//调用方法
    	qiaoHu.hobby('唱跳rap篮球');
     var luFei = new User('路飞',10086,'1111')
     //调用构造函数必须使用new
     //我们只要new User()调用函数就创建一个对象 {}
     	console.log(luFei.uname);
    	console.log(luFei['qq']);
    	console.log(luFei.passwd);
    	luFei.hobby('吃,喝,睡');
    	
构造函数和对象

  构造函数 泛指的某大类它类似于 java 语言里面的类(class)
  对象特指是一个具体的事物
  我们利用构造函数创建对象的过程我们也称为对象的实例化

4.使用对象

1.调用对象的属性

(1)调用对象的属性我们采取 对象名.属性名
  比如 调用名字
    console.log(wuXian.uname);
    这个点 可理解为 ’的‘
  (2)调用属性还有一种方法 对象名[‘属性名’]
    console.log(wuXian[‘age’]) //注意 中括号里面要调用的属性 记得加引号
    以上两种方法的区别在哪里呢? 我去搜了一下 这里给大家写出来
  1.语法方面的区别
    点表示法的对象的属性名是标识符,而后者的属性名则是一个字符串。
  2.灵活性方面的区别
    在JavaScript编写程序中,可以为对象创建任意数目的属性。但使用”.“运算符来存取一个对象的属性时,属性名是用标识符表示的。而在JavaScript程序中,标识符必须被逐字地输入,它们不是一种数据类型,因此程序不能对其操作。也就是说,标识符是静态的,在程序中必须对其进行硬编码。
    而使用数组[]表示法来存取一个对象的属性时,属性名是用字符串表示的。字符串是JavaScript的一种数据类型,因此可以在程序运行中操作并创建它们。
  3.性能方面区别
    数组[]表示法在存取属性值时会进行表达式运行。而点表示法是直接存取属性值,理论上执行效率会比数组表示法高。性能方面其实可以忽略。
    某些场景必须用到数组表示法来动态存取属性值,这个是点表示法无法做到的。
    总的来说,这两种方法区别上不大,都有对应的使用场景。点表示法一般作为静态对象使用时来存取属性。而数组表示法在动态存取属性时就非常有用。

2.调用对象的方法

   调用对象的方法其实和属性差不了多少 就这样:对象名.方法名(); 因为我们在写对象的方法是使用的函数 所以后面要加小括号

//调用对象的方法
        wuXian.sayHei();

 我们也学习了 变量 和函数 这是他们的区别

在这里插入图片描述
好了今天就到这里 明天继续

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值