欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JavaScript 学习笔记 (1)

程序员文章站 2022-03-17 14:25:28
...

对象

1.创建对象
  对象直接量: 由若干键值对组成的映射表。用来创建对象。
var obj = {a:111,b:333 } ; 等
  new关键字:new运算符创建并初始化一个新对象。关键字new后面跟随一个函数调用。这里的函数称作构造函数(constructor),构造函数用以初始化一个新创建的对象。js语言核心中的原始类型都包含内置构造函数

var obj = new Object();
var bool = new Boolean();
var arr= new Array();
var d = new Date();
var reg = new RegExp('jd');

除了这些内置构造函数外,自定义构造函数也是很常见的。

2.检查对象属性

  • in :检测对象的自有属性和继承属性
  • hasOwnProperty : 检测对象的自有属性
  • propertyIsEnumerable : 检测对象的自有属性,且该属性为可枚举。

  例子

	var obj = {
		name:'obj',
		get value(){return 3}
	}
    var obj1 = Object.create(obj);   // 以obj为原型 创建一个对象
    obj1.age = 14;   // 自有属性
    console.log('name' in obj1);   //true
    console.log('age' in obj1);    //true
    console.log(obj1.hasOwnProperty('name')); // false
    console.log(obj1.hasOwnProperty('age'));  //true
    console.log(obj1.propertyIsEnumerable('age'));//true

3.枚举属性

  • for…in… :遍历对象中所有可枚举的属性名(包括自有属性和继承属性)
  • Object.keys( ) :返回对象所有可枚举的自有属性名数组。
  • Object.getOwnPropertyNames( ) :返回对象所有的自有属性名数组,包括不可枚举的。

4.属性getter和setter
  不同于数据属性,由getter和setter定义的属性称为存储器属性

var obj = {
	label:'公共属性',
	$value:'私有属性',
	
	get num(){return 20},
	set num(v){ },
		
	get name(){return '只读属性'}
}
obj.$value // '私有属性'
obj.num  // 20;
obj.name // '只读属性'

5.属性的特性

数据属性

  • 值 (value)
  • 可写性 (writable)
  • 可枚举性 (enumerable)
  • 可配置性 (configurable)

存储器属性

  • 可读 (get)
  • 可写 (set)
  • 可枚举性 (enumerable)
  • 可配置性 (configurable)

读取自有属性的特性(继承属性需要遍历原型链):

var obj = {
	label:'1111'
}
//返回 :  {value: "公共属性", writable: true, enumerable: true, configurable: true}
Object.getOwnPropertyDescriptor(obj,'label') 

定义属性

var o = { };
//给对象o 定义了一个名为x的只读属性
Object.defineProperty(o,'x',{value:1,writable:false,enumerable:true,configurable:true});
//将x变成存储器属性
Object.defineProperty(o,'x',{get:function(){return 0}})
相关标签: js对象