JavaScript基础语法8——对象(创建+属性+包装类+原型)

本文详细解析了JavaScript中对象的创建方式(字面量、构造函数)、属性操作(增删改查)以及原型(prototype)和__proto__的作用。讲解了如何利用原型进行代码复用和继承,适合初学者和进阶开发者阅读。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对象

1. 对象的创建

  1. 对象字面量/对象直接量: var obj = {}

    var mrDeng = {
    	name : 'MrDeng',
    	age : '40',
    	sex : 'male',
    	wife : 'xiaoWang',
    	health : 100,
    	//函数1
    	smoke : function(){
    		console.log('I am smoking!');
    		this.health --;	// 运行这个函数,可以改变其他属性
    	},
    	//函数2
    	drink(){
    		console.log('I am dring');
    		this.health ++;	// 运行这个函数,可以改变其他属性
    	}
    }
    
  2. 系统自带的构造函数 : Object()

    var obj = new Object();
    obj.name = 'yaoyaole';
    obj.age = 40;
    
  3. 自定义

    // 构造函数(生产车间)必须是大驼峰式命名 
    function Car(color){
    	//相当于有var this = new Object();
    	this.color = color;//可以往里面传参数,给属性赋值
    	this.name = 'BMW';
    	this.height = '1400';
    	this.lang = '4900';
    	this.weight = 1000;
    	this.health = 100;
    	this.run = function(){
    		this.health --;
    	}
    	//相当于有return this;(赋值的时候有new才生效)
    }
    var car1 = new Car();	//从车间出来后,互不影响
    var car2 = new Car();	//从车间出来后,互不影响
    car1.name = 'Maserati';
    car2.name = 'Merz'
    

2. 对象的属性

第一种:

  1. 增/改:mrDeng.wife = 'xiaoLiu'
  2. 删:delete mrDeng.name;
  3. 查:console.log(mrDeng.wife); console.log(mrDeng);
    第二种:
  4. 增/改:mrDeng['wife'] = 'xiaoLiu'
  5. 删:delete mrDeng['name'];
  6. 查:console.log(mrDeng['wife']); console.log(mrDeng);

3. 包装类

  1. new出来的东西都是对象

    //创建对象
    var num = new Number(123);
    var str = new String('abcd');
    var boo = new Boolean(true);
    var obj = new Object();
    var car1 = new Car();//
    //对象的赋值
    num.name = '这是一个数字';
    num.str= '这是一个字符串';
    num.boo= '这是一个布尔值';
    
  2. 原始值是没有属性和方法的(不能像对象来用)

    //创建一个原始值
    var num = 4;
    //赋值失败,此句无效,当场销毁
    num.len = 3;
    //找不到,输出undefined
    console.log(num.len);
    

4. 原型(prototype)——车间的隐式属性1

  1. 定义:原型是function对象的一个属性,它定义了构造函数制造出的对象的公共祖先。通过该构造函数产生出的对象,可以继承该原型的属性和方法。原型也是对象。儿子叫Person,它叫Person.prototype,它的属性叫Person.prototype.属性名。
  2. 作用:可以提取共有属性,避免代码的耦合(多次执行相同代码)
  3. 增删改查
    1. 增:

      添加个别属性:

      Person.prototype.新属性名 = 属性值;
      

      添加很多属性:

      Person.prototype{
      	name : 'laoDeng';
      	ege : 18;
      }
      
    2. 删:delete Person.prototype.属性值;

    3. 改:Person.prototype.属性名 = 属性值;

    4. 查:Person.prototype; Person.prototype.属性名;

  4. 原型属性(prototype)里面的属性构造(constructor)是为了找到产品的生产车间
    1. 代码

      	//定义Pic里prototype属性里面的属性constructor,为函数名(注意没有括号)
      	Pic.prototype = {
          	constructor : House
          }
          function House(){
              name : 'house'
          };
      	function Pic(){
          	name : 'pic'
       	};
      	var pic = new Pic();
      
      	//控制台结果,显示了pic的constructor属性已修改
      	pic.constructor
      	ƒ House(){
          name : 'house'
         }
      

5. 原(__proto__)——车间的隐式属性2

  1. 里面放的是原型
  2. 他其实是一个原型链,在找车间东西的时候,如果找不到,就来找__proto__属性之下的原型(prototype)属性。
  3. 在定义车间函数的时候:定义了原属性,并指向原型函数(对象)
    
    //
    function Person(){
    	var this = {
    		__proto__ : Person.prototype
    	}
    	this.属性名1 = 属性1;
    	this.属性名2 = 属性2;
    }
    var person = new Person();
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值