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}})
上一篇: 经典卷积神经网络LeNet-5模型