JS基础学习05

面向过程

凡事亲力亲为,每件事的具体过程都要知道,注重的使过程

面向对象

根据需求找对象,所有的事都用对象来做,注重的是结果
三大特性:封装、继承、多态(抽象性)
JS不是面向对象的语言,但是可以模拟面向对象的思想
JS是一门基于对象的语言,没有继承/多态特性

对象 —— 属性、行为

万物皆对象
看得见,摸得到,具体特指的某个事物/不是某一类事物
一组无序属性的集合,属性的值可以是任意类型

instanceof
创建对象的不同方式
1.调用系统的构造函数创建对象
	var obj = new Object();	//实例化一个对象,Object是系统的构造函数
	obj.name = "小黑";	//添加属性 对象.属性名 = 值
	obj.eat = function(){ };	//添加方法 对象.行为名 = 行为方法 
	console.log(obj.name)	;	//获取对象属性
	obj.eat();			//调用对象行为方法


	如何获取对象属于什么类型的?
	console.log(dog instanceof Object)--->True
		语法:instanceof 类型的名字----->布尔类型,true就是这种类型,false不是

	在当前的对象的方法中,可以使用this关键字代表当前对象
	在当前对象的方法中可以使用当前对象的属性
	
	工厂模式创建对象 --一次性创建多个对象
		把创建对象的代码封装在一个函数中
		function createObject(name,age){
			var obj = new Object();
			obj.name = name;
			obj.age = age;
			obj.sayHi = function(){
				console.log("Hello, my name is" + this.name+ "my age is" + this.age);
			};
			return obj;
		}
		var person = createObject("小黑", 10);
		person.sayHi();	
		
2.自定义构造函数创建对象
	(1)在内存中开辟(申请一块空闲的)空间,存储创建的新的对象
	(2)把this设置为当前的对象
	(3)设置对象的属性和方法的值
	(4)把this这个对象返回
	//函数和构造函数的区别:名字首字母是不是大写,用法一样
	function Person(name,age){		//自定义构造函数
		this.name = name;
		this.age = age;
		this.sayHi = function(){
			console.log("我叫:" +this.name + ",年龄是" + this.age );
		};
	}	
	var obj = new Person("小黑", 20);
	console.log(obj.name);
	obg.satHi();
	
3.字面量方式创建对象
	var obj = {};		//空对象
	obj.name = name;
	obj.age = age;
	obj.sayHi = function(){
		console.log("Hello, my name is" + this.name+ "my age is" + this.age);
	};
	obj.sayHi();

	//优化后的写法
	var obj2 = {
		name : “小黑”,
		age : 10,
		sayHi : function(){
			console.log("666");
		},
	};
	obj2.sayHi();

缺陷:一次性的对象
JS是一种动态类型的语言
1.代码(变量)只能执行到这个位置的时候,才知道这个变量中到底存储的是什么,如果是对象,就有对象的属性和方法,如果是变量就是变量的作用
2.对象没有什么,只要点了,通过点语法,那么就可以为对象添加属性和方法
	点语法: 对象.名字 = 值/函数;
JSON类型的数据
一般是成对的数据--键值对
json也是一个对象,数据都是成对的,一般无论是键还是值都是用双引号括起的

var json = {
	"name" : "小明",
	“age” : “10”,
	“sex” : "男",
};
// key 是一个对象,这个变量中存储的是该对象的所有的属性的名字
for(var key in json){
	console.log(key+"=========="+json[key]);
}

遍历对象,不能通过for循环遍历,无序

数据类型深入

简单的类型和复杂的数据类型
原始数据类型:number、string、boolean、undefined、null、object
基本类型(简单类型),值类型:number、string、boolean
复杂类型(引用类型):object
空类型:undefined、null

值类型的值一般在栈中存储
引用类型的值一般在栈和堆中存储

值类型与引用类型的传递
	值类型之间传递的是值,引用类型之间传递的是地址(引用)

内置对象 --JS系统自带的对象

自定义对象--自己定义的构造函数创建的对象
实例对象--通过构造函数创建出来,实例化的对象--必须通过实例对象调用
静态对象--不需要创建,直接就是一个对象,方法(静态方法)直接通过对象名字调用
		必须通过大写的对象调用

内置对象:
		Math、Data、String、Array、Object
Math
与其它全局对象不同的是, Math 不是一个构造器.  Math 的所有属性和方法都是静态的. 
你用到的常数pi可以用 Math.PI 表示,用 x 作参数 Math.sin(x)调用sin函数. 
JavaScript中的常数, 是以全精度的实数定义的.


MDN -- 在线的帮助文档

猜你喜欢

转载自blog.csdn.net/weixin_42966943/article/details/87980996