javascript对象

编程形式的区别:1.面向过程2.面向对象,JavaScript是半面向过程半面向对象

对象

对象:包含属性、方法;方法致力于改变属性;特指的某个对象。
形式:var obj = {属性名:“属性值”,属性名:属性值""} 打印console.log(obj.属性名)——属性值

例:var mrWang = {
	name : "mrWang”,
	age : 20,
	sex : "male",
	health : 100,
	smoke : function (){
		console.log("smoking!");
	},
	drink : function (){
		console.log("drinking");
	}
}
点语法
属性的增加:mrWang.wife = "xiaoliu"; 点完后就相当于给对象增加属性
属性的删除:delete mrWang.name
属性的改变:meWang.sex = "female"
属性的查找:mrWang.age
obj.name = "adad'; 和obj["name"] = 'sadfa';相同,数组方括号里必须是双引号

访问一个对象没有的属性的结果为undefined

对象的创建方式

1.var obj = {} 对象字面量/对象直接量
2.构造函数
①系统自带的构造函数 Object()/Array()/number(); 可批量生产对象,长得一样但彼此独立
var obj = new Object() == var obj = {} 构造函数命名规则:大驼峰式特点。
eg: obj .name = 'abc'; obj.sex = 'famale';可灵活加属性加方法
②自定义 function Person(){} var person1 = new Person();

例:function Car(color){
	this.color = color;
	this.name = "BMW";
	this.height = "1400";
	this.lang = 4900;
	this.run = function (){
		this.health = 100;
	}
}
var car = new Car("red");
var car1 = new Car("green");
构造函数内部原理:

1.在函数体最前面隐式的加上this = {};空对象(存储创建新的对象)
2.执行this.xxx = xxx;(this设置为当前的对象,设置对象的属性和方法)
3.隐式的返回this(把对象返回)

例:function Student(name,age,sex){
	var this = {};//构造函数第一步
	AO{this : {}}
	this.name = name;//第二步this.xxx = xxx;
	this.age = age;
	this.sex = 'sex';
	//第三部return this
}
var student = new Student('zhangsan',18,'male');

例子:function Person(name,height){
	this.name = name;
	this.height = height;
	this.say = function(){
		conslole.log(this.say);
	}
}
console.log(new Person('xiao',160));

包装类(可像对象任意操作)

原始值赋值会调用包装类
1.new Number()数字类型对象,数字原始值对象参与运算后变为数字

eg:  var num = 123;
var num = new number(123);
num.abc = 'a';//可像对象一样操作
num.abc——a//执行
num*2——246
案例:不能用属性还要加属性?(调用包装类)
var num = 4;
num.len = 3;
console.log(num.len);—— undefined
内部发生的操作:
新建数字对象弥补操作不足//new Number(4).len = 3隐式创建然后删除
//这时候访问:new number(4).len已经不是同一对象,len属性已被删除

2.new String()字符串类型对象

eg: var str = new string('abcd');
str.a = 'bcd';
执行:str.a——'bcd'
str.sayvalue = function (){
	return this.a;
}
执行:str.sayvalue()——'bcd'

案例: var str = abcd';
str.length = 2;
console.log(str);——'abcd'
//新建new String('abcd').length = 2;后删除
案例:var str = 'abc';
str += 1;
var test = typeof(str);
//new String(test).sign = 'xxx'; 创建后删除
if(test.length == 6){
	//new String(test).sign原始值赋值要调用包装类
	test.sign = "typeof的返回值为string";
}
console.log(test.sign);——undefined

3.new Boolean()布尔类型对象

Json格式的数据(一般是成对出现,是键值对,前后端都有)

json是一种传输数据的格式(以对象为样板,本质上就是对象,但用途上有区别,对象就是本地用的,json是用来传输的)

var obj = {
	"name" : "abc",//属性名必须加双引号,属性值也加双引号
	"age" : "23"
}
 Json.parse();  字符串转换为json:
var str = Json.parse(obj)——转换为对象:
{
	name : 'abc',
	age : 123
}
Json.stringify();Json转换为字符串:
Json.stringify(obj)
{
"name" : "abc",
"age" : 123
}
对象的遍历(for in循环)

for(var prop in obj){
console.log(prop);
//console.log(obj[“prop”]);
}
把对象属性名提取出来通过属性个数控制圈数

js学习中的三种对象类型

1.内置对象:js系统自带的(Math,Date,String,Array,Object)
参考MDN在线文档
2.自定义对象——自己定义的构造函数创建的对象
3.浏览器对象

Math对象

Math是一个内置对象,具有数学是常数和函数的属性和方法,不是一个函数对象。
实例对象:通过构造函数创建出来,实例化的对象。
静态对象:不需要创建,直接就是一个对象;方法(静态方法),直接通过这个对象名字调用。
Math属性:Math.PI ·······Π
Math.E·························欧拉常数,也是自然对数的底数, 约等于 2.718.
?Math方法:Math.abs(x)···返回x的绝对值
Math.ceil(x)····················向上取整
Math.floor(x)···················向下取整
Math.fround(x)················把一个数变成小数
Math.max(x)···················返回一组数据中的最大值

自己定义max方法:
function MyMax(){
	this.getMax = function (){
		var max = argument[0];
		for(var i = 0;i < argument.length;i++){
			if(max < argument[i]){
				max = argument[i];
			}
		}
		return max;
	}
}
var mt = new MyMax();

Math.min(x)····················返回一组数据中的最小值
Math.pow(a,b)·················返回a的b次幂
Math.sqrt(x)····················返回x的平方根
Math.random(x)···············返回0~1中的伪随机数
Math.round(x)··················返回四舍五入后的数

你可能感兴趣的:(JavaScript,js对象,包装类,构造函数,Math对象,json格式对象)