JS对象知识点详解

原始值

原始值:没有属性或方法的值,例如3.14、“google”、true、null、undefined

原始数据类型:拥有原始值的数据

5个原始数据类型:string number boolean null undefined

创建对象

使用对象字面量:{}

使用new关键字

var person = new Object();
person.firstName = "Bill";
person.lastName = "Gates";
person.age = 50;
person.eyeColor = "blue"; 
访问属性

objectName.property

objectName[“property”]

遍历属性

for…in…循环遍历对象

var person = {fname:"Bill", lname:"Gates", age:62}; 
for (x in person) {
    txt += person[x];
}
添加属性

通过简单的赋值添加属性

person.nationality = "English";
删除属性

delete 关键字

delete不会删除原型属性

var person = {firstName:"Bill", lastName:"Gates", age:62, eyeColor:"blue"};
delete person.age;   // 或 delete person["age"];
创建方法
var person = {
  firstName: "Bill",
  lastName : "Gates",
  id       : 648,
  fullName : function() {
    return this.firstName + " " + this.lastName;
  }
};
访问方法

objectName.methodName()

添加方法
function person(firstName, lastName, age, eyeColor) {
    this.firstName = firstName;  
    this.lastName = lastName;
    this.age = age;
    this.eyeColor = eyeColor;
    this.changeName = function (name) {
        this.lastName = name;
    };
}

Object.valus(object) 将对象的属性值组合成一个数组返回

JSON.stringify(object) 将对象转化成JSON文本返回,该方法不会对函数字符串化

getter和setter

使用set和get关键字创建属性的getter和setter方法

var person = {
  firstName: "Bill",
  lastName : "Gates",
  language : "",
  set lang(lang) {
    this.language = lang.toUpperCase();
  },
  get lang() {
    return this.language.toUpperCase();
  }
};

Object.defineProperty(obj,属性名,{属性描述}) 为对象属性绑定get和set方法

var obj = {counter : 0};
Object.defineProperty(obj, "reset", {
  get : function () {this.counter = 0;}
});

以属性形式方法get和set方法

对象构造器
function Person(first, last, age, eyecolor) {
    this.firstName = first;
    this.lastName = last;
    this.age = age;
    this.eyeColor = eyecolor;
    this.name = function() {return this.firstName + " " + this.lastName;};
}
var myFather = new Person("Bill", "Gates", 62, "blue");
var myMother = new Person("Steve", "Jobs", 56, "green");
对象原型

所有的js对象都从原型上继承属性和方法

无法通过简单赋值的方式为对象构造器添加属性或方法

Object.prototype.属性名 = 属性值

Object.prototype.方法名 = function(){…}

Person.prototype.nationality = "English";
Person.prototype.name = function() {
    return this.firstName + " " + this.lastName;
};
管理对象方法

Object.create() 创建一个空对象

const obj = Object.create({})
obj.name = 'zd'
obj.getName = function () {
  return obj.name
}
console.log(obj.getName())

Object.defineProperty(object,property,descriptor) 为对象属性添加描述

Object.defineProperties(object,descriptors) 同时为对象添加多个属性的描述

Object.defineProperties(obj, {
  age: {
    value: 999,
    get age() {
      return this.age
    },
    set age(newAge) {
      this.age = newAge
    }
  },
  address: {
    value: '北京',
    enumerable: false,
    writable: true,
    configurable: true
  }
})
console.log(obj.age)

Object.getOwnPropertyDescriptor(object,“property”) 获取对象属性描述

function Person(name) {
  this.name = name
}
console.log(Object.getOwnPropertyDescriptor(Person, 'name'))

Object.getOwnPropertyNames(object) 以数组形式返回对象属性

Object.getPrototypeOf(object) 访问对象原型

Object.keys(object) 获取对象的可枚举属性

  • 通过{}或者object.属性名 = 属性值简单创建的对象属性的enumerable默认true
  • 通过Object.defineProperty()创建的属性enumerable默认false
保护对象方法

Object.preventExtensions(object) 禁止向对象添加属性

Object.isExtensible(object) 判断能否扩展对象属性

Object.preventExtensions(obj)
console.log(Object.isExtensible(obj)) // true
obj.newProper = '新属性'
console.log(obj.newProper) // undefined

Object.seal(object) 设置禁止修改object对象的属性,但可以修改对象属性的值

Object.isSealed(object) 判断是否能够修改对象属性

Object.freeze(object) 禁止对对象进行任何修改(冻结对象)

Object.isFrozen(object) 判断对象是否被冻结

Map对象

1、Map对象存有键值对;2、键可以是任何数据类型;3、键的顺序保持初始插入顺序;4、有表示映射大小的属性;5、键具有唯一性

new Map() 创建Map对象

创建空的Map对象
const fruits = new Map();
// Add new Elements to the Map
fruits.set(apples, 500);
fruits.set(bananas, 300);
fruits.set(oranges, 200);

将一个数组传给Map构造器函数
const fruits = new Map([;
  [apples, 500],
  [bananas, 300],
  [oranges, 200]
]);

Map.set(键名称,值) 在Map中设置键值对

Map.get(键名称) 获取键对应的值

Map.entries() 返回键和值组成的数组

Map.values() 返回值组成的数组

Map.keys() 返回键组成的数组

Map.size 获取元素数量

const map = new Map([
  ['苹果', 100],
  ['香蕉', 200],
  ['桃子', 300]
])
console.log(map) // Map(3) { '苹果' => 100, '香蕉' => 200, '桃子' => 300 }
console.log(map.size) // 3
map.set('柚子', 900)
console.log(map.size) // 4
console.log(map.get('香蕉')) // 200
console.log(map.entries())
console.log(map.values()) // { 100, 200, 300, 900 }
console.log(map.keys()) // { '苹果', '香蕉', '桃子', '柚子' }

Map.clear() 清空Map

Map.delete(键名称) 删除键指定的元素

Map.has(键名称) 判断Map中是否存在键

Map.forEach(callback) 遍历map对象并对每个元素执行回调函数

// value, key, map 对应 值,键,map对象本身
map.forEach((value, key, map) => {
  console.log(value, key, map)
})
Set对象

1、值具有唯一性;2、Set中可以存储任意数据类型的值

new Set()

Set.add(值) 向set中添加一个值

Set.clear() 清空set

Set.delete(值) 删除指定值

Set.entries() 返回Set对象中键( = 值)值组成的数组

Set.has(值) 判断Set对象中是否存在某个值

Set.forEach(callback) 遍历Set集合并为每个值调用回调函数

Set.keys() 返回Set对象中值组成的数组

Set.values() 与keys() 相同

Set.size set中值的个数

创建空Set对象
const letters = new Set();
letters.add(a);
letters.add(b);
letters.add(c);

把数组传给Set构造器函数
const letters = new Set(["a","b","c"]);
const set = new Set()
set.add('1')
set.add('2')
console.log(set.values())
// [Set Iterator] { '1', '2' }
console.log(set.entries())
// [Set Entries] { [ '1', '1' ], [ '2', '2' ] }
console.log(set.keys())
// [Set Iterator] { '1', '2' }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值