The object of JavaScript
前言
这一章文章主要是研究JavaScript的对象以及它的属性,注意这里指的是object对象的属性,有些人会误以为是JavaScript的属性。JavaScript的概念里面一共有三座大山,this,原型以及
概念
javascript 中的对象 (物体),和其它编程语言中的对象一样,可以比照现实生活中的对象来理解它。 javascript 中对象 (物体) 的概念可以比照着现实生活中实实在在的物体来理解。
对象和属性
一个 javascript 对象有很多属性,一个对象的属性可以被解释成一个附加到对象上的变量。对象的属性和普通的 javascript 变量基本没什么区别,仅仅是属性属于某个对象。属性决定了对象的特征,你可以通过“.”符号来访问一个对象的属性。简单的来说,一个对象有很多属性或者说很多变量。就好比一个人有很多种性格特征,他的性格特征也是可以改变的,只是这些特征都属于这一个人。
objectName.propertyName
和其他 javascript 变量一样,对象的名字 (可以是普通的变量) 和属性的名字都是大小写敏感的。你可以在定义一个属性的时候就给它赋值。例如,我们创建一个 myCar 的对象然后给他三个属性,make,model,year。具体如下所示:
和其他 javascript 变量一样,对象的名字 (可以是普通的变量) 和属性的名字都是大小写敏感的。你可以在定义一个属性的时候就给它赋值。例如,我们创建一个 myCar 的对象然后给他三个属性,make,model,year。具体如下所示:
对象中未赋值的属性的值为undefined而不是null,undefined是指我们他的属性值为空,null是没有属性。这两个是不同的概念。
声明对象的两种方式
obj = {'name': tina ,'age': 18}
ojb = new Object {'name':tina,'age':18}
JavaScript 对象的属性也可以通过方括号访问或者设置
myCat["name"] = "wallet";
myCat["color"] = "grey";
myCat["year"] = 1;
对象的属性编辑--增删改查
查看对象属性
查看自身属性:
Object.keys(obj)=Object['key'](obj)
查看属性名
Object.values(obj)
查看属性值
Object.entries(obj)
查看属性名和属性值
查看共有属性:
console.dir(obj)
查看共有属性
obj__proto__
直接打印隐藏属性
注意区分in
'age' in obj;//true
'name' in a=obj//false
in主要是用于查看对象中是否存在这个属性,返回值通常是true or false;
修改和增加
对象直接赋值:
obj.name = ''
可以是空的字符串
对象批量赋值: Object.assign(obj,{age:18,gender:'female'})
window.Object.prototype可以修改原型,但是建议不要修改,否则容易报错出现更多的bug。
删除属性
你可以用 操作符删除一个不是继承而来的属性。下面的例子说明如何删除一个属性:
//创建新对象, myobj, 属性a和b.
var myobj = new Object;
myobj.a = 5;
myobj.b = 12;
//删除a这个键名, 留下b这个属性.
delete myobj.a;
构造函数
Object.create 创建新对象,增加原型原型属性
var basic ={'name':'christina','age':18}
let baby=Object.create(basic)
baby.name = 'wallet'
baby.age = '2'
var basic ={'name':'christina','age':18}
var baby =Object.create(basic,{
name:{value:'wallet'}
})
可以直接在构造函数的时候创建新对象的属性;注意花括号以及字符的区分;
new
function Car(make, model, year) {
this.make = make;
this.model = model;
this.year = year;
}
为了定义对象类型,为对象类型创建一个函数以声明类型的名称、属性和方法。例如,你想为汽车创建一个类型,并且将这类对象称为 car ,并且拥有属性 make, model,和 year
var kenscar = new Car("Nissan", "300ZX", 1992);
var vpgscar = new Car("Mazda", "Miata", 1990);
你可以通过调用 new 创建任意数量的 car 对象。
一个对象的属性值可以是另一个对象。例如,假设你按如下方式定义了 person 对象:
function Person(name, age, sex) {
this.name = name;
this.age = age;
this.sex = sex;
}
创建一个person对象;
var rand = new Person("Rand McKinnon", 33, "M");
var ken = new Person("Ken Jones", 39, "M");
创建了新的实例,person为原型的新对象并创建了新的属性;
function Car(make, model, year, owner) {
this.make = make;
this.model = model;
this.year = year;
this.owner = owner;
}
重写car这个对象并且修改函数。
var car1 = new Car("Eagle", "Talon TSi", 1993, rand);
var car2 = new Car("Nissan", "300ZX", 1992, ken);
实则是引用了变量rand 和 ken.
cosnole.dir(car1). 你成功的添加到car1这个对象,并且它的属性值是person对象的属性值;听起来可能很绕,但是多看两遍就能够理解这句话,实则是重复了两遍new的使用。
this
JavaScript 有一个特殊的关键字 this,它可以在方法中使用以指代当前对象。例如,假设你有一个名为 validate 的函数,它根据给出的最大与最小值检查某个对象的 value 属性.
function validate(obj, lowval, hival) {
if ((obj.value < lowval) || (obj.value > hival)) {
alert("Invalid Value!");
}
}
然后,你可以在每个元素的 onchange 事件处理器中调用 validate,并通过 this 传入相应元素,代码如下:
<input type="text" name="age" size="3"
onChange="validate(this, 18, 99)">
this主要是指在一个方法或者函数中调用的对象;