15 对象

对象
是什么:
  1 js对象
    狭义对象 
			js对象,用{ }大括号标识,特点:可以添加属性、属性可以访问。对象是拥有属性和方法的数据
      什么是狭义对象:
        一组无序的属性集合,它由若干键值对组成,JavaScript对象的键都是字符串类型,值可以是任意数据类型
				var person = {
					name: 'Bob',
					age: 20,}

    广义对象
			我们认知的对象,window 、 Date 、Math
  2 基本类型数据不是对象
       number null undefined string boolean
    为什么:
      因为基本类型数据不能添加属性,不能拿到属性值,所以基本数据类型不是对象

  3 json与js狭义对象
    var p1 = {
    "name":"along",
    "age":31
  }

  	json的属性必须加双引号,一般狭义对象不加引号的 
	  var obj = {
	    "~~":"2019",
	    "国籍":"china",
	   "2018":2018
	  } 

怎么使用对象
	背景
  	我们操作DOM,js对象中包含DOM元素和方法,通过调用js对象的方法来操作DOM元素
	访问属性
		访问对象的属性有2中方法,点记法和索引发
			xiaohong.name;
			xiaohong['middle-school']; // 'No.1 Middle School'
			
		1、点记法访问属性
			点记法要求属性名必须是一个有效的变量名。
			如果属性名包含特殊字符,就必须用''括起来,访问这个属性也无法使用.操作符,必须用['xxx']来访问
			var xiaohong = {
			name: '小红',
			'middle-school': 'No.1 Middle School'
		};
		
		如果访问一个不存在的属性会返回什么呢?
			JavaScript规定,访问不存在的属性不报错,而是返回undefined
		
		判断一个属性在不在对象中
  			hasOwnProperty 、in		
			如果我们要检测xiaoming是否拥有某一属性,可以用in操作符
				'name' in xiaoming; // true	
				不过要小心,如果in判断一个属性存在,这个属性不一定是xiaoming的,它可能是xiaoming继承得到的:'toString' in xiaoming; // true
				要判断一个属性是否是xiaoming自身拥有的,而不是继承得到的,可以用hasOwnProperty()方法
					xiaoming.hasOwnProperty('name'); // true
					xiaoming.hasOwnProperty('toString'); // false
	删除、新建属性	
		由于JavaScript的对象是动态类型,你可以自由地给一个对象添加或删除属性
		xiaoming.age = 18; // 新增一个age属性
		delete xiaoming.age; // 删除age属性
		
	对象找属性
  原型链查找机制
    对象调用方法,先从自己里面找,如没有,就往上查找原型(__proto__)有没有,一直往上查找
    __proto__、prototype都指向原型,表示同一个东西

原型
  什么是原型
  	原型就是类
  __proto__:是每个对象都有
  prototype:是函数才会有的属性,两者指向同一个原型对象


创建对象
  1、 直接用{ ... }创建一个对象
  2、用构造方法创建对象
    先定义一个构造函数
      function Student(name) {
        this.name = name;
        this.hello = function () {
        alert('Hello, ' + this.name + '!');
        }
      }
    var xiaoming = new Student('小明');//写了new,它就变成了一个构造函数,它绑定的this指向新创建的对象,并默认返回this,也就是说,不需要在最后写return this;
    xiaoming.name; // '小明'
    xiaoming.hello(); // Hello, 小明!

 

判断一个属性在不在对象中
  hasOwnProperty 、in

判断一个对象的实例
  instanceOf

类型是什么
	我们说的类型就是构造函数的名字的

继承
  子类继承父类的属性和方法

	怎么做
  	1、儿子的原型指向父亲。属性和方法
  	2、儿子的构造方法中调用父类的构造方法,仅属性

	什么时候用继承
  	同城我们不用继承,直接new对象就可以了,只有需要修改父类方法时才需要继承


  

  

原文地址:https://www.cnblogs.com/xuanjian-91/p/10267014.html