JavaScript内置对象-Object
▓▓▓▓▓▓ 大致介绍
JavaScript的简单数据类型包括:Undefined、Null、Boolean、Number、String。JavaScript中这五种基本数据类型不是对象,其他所有值都是对象。其中还有一些对象子类型,通常被称为内置对象(引用类型)
1、Object
2、Array
3、Date
4、RegExp
5、Function
6、Boolean
7、Number
8、String
▓▓▓▓▓▓ 创建对象的三种方法
创建对象有三种方法:
1、对象字面量,即用{}生成,一个对象字面量就是包围在一对花括号中的零个或多个“名/值”对
2、构造函数,利用Object()构造函数生成
3、Object().create方法生成
注意:推荐第一种写法,第三种方法多用在继承的场合
var myobj = {
key : value;
}
var myobj = new Object()
myobj.key = value;
var myobj = Object.create(Object.prototype);
myobj.key = value;
▓▓▓▓▓▓ 引用
对象通过引用来传递,它们永远不会被复制。简单来说就是多个变量指向同一个对象,那么他们都是这个对象的引用,多个变量它们都指向同一个内存地址,如果通过一个变量修改了指向的对象,那么所有指向这个对象的变量都会发生改变
var o = {
name : 'laowang'
};
var b = o;
b.name = 'liu';
console.log(o.name); //liu
▓▓▓▓▓▓ 属性操作
读取属性
读取对象的属性有两种方法,一种是用点运算符,另一种是用方括号运算符
var o = {
name : 'laowang'
};
o.name; //'laowang'
o['name']; //'laowang'
注意:点操作符要求属性名满足标示符的命名规范,而方括号运算符的方式可以接受任何字符串作为属性名
例如:
var o = {
name : 'laowang',
'super-f' : 2
};
console.log(o.super-f); //报错
console.log(o['super-f']); //
可以在方括号中括住一个字符串表达式的方式来访问属性
var o = {
name1 : 'laowang',
name2 : 'liaomou',
name3 : 'PDD'
};
for(var i=1;i<4;i++){
console.log(o['name'+i]);//laowang liaomou PDD
};
在对象中,属性名永远都是字符串,如果你使用String以外的其他值作为属性名,那他首先会被转换为一个字符串。即使是数字也不例外
var myObject = {};
myObject[true] = 'foo';
myObject[2] = 't';
myObject['true']; //"foo"
myObject['2']; //"t"
写入属性
可以用点运算符和方括号运算符写入属性
var myObject = {
name : 'laowang'
};
//两种方法的效果是一样的
var myObject = {};
myObject.name = 'laowang';
myObject[name] = 'laowang';
查看属性
可以使用Object.keys()方法
var myObject = {
name : 'laowang',
address : '西青区'
};
console.log(Object.keys(myObject)); //["name", "address"]
删除属性
删除属性可以用delete运算符,它不会触及原型链中的任何对象,删除对象的属性可能会让来自原型链中的属性透现出来
var myObject = {
name : 'laowang',
address : 'xi'
};
var anotherObject = Object.create(myObject);
anotherObject.name = 'xiaoma';
console.log(anotherObject.name);
delete anotherObject.name;
console.log(anotherObject.name); //laowang 删除了自己本身的属性,透现出来了原型的属性
delete anotherObject.address;
console.log(anotherObject.address); //xi 不会删除原型中的属性
检测属性是否存在
我们要检测一个属性是否在对象中,可以使用in操作符
var myObject = {
name : 'laowang',
address : 'xi'
};
console.log('name' in myObject); //true
console.log('sex'in myObject); //false
注意:in操作符会检查属性是否在对象及原型链中,如果要检测一个属性是否在对象中,不涉及原型链,可以使用hasOwnProperty()
var myObject = {
name : 'laowang',
address : 'xi'
};
var anotherObject = Object.create(myObject);
console.log('name' in anotherObject); //true
console.log(anotherObject.hasOwnProperty('name')); //false
遍历属性
有时需要遍历一个对象的所有属性,可以使用for..in语句
var myObject = {
name : 'laowang',
address : 'xi',
sex : 'man'
};
for(var i in myObject){
console.log(myObject[i]); //laowang xi man
};
注意:for..in语句会遍历对象的可枚举属性,包括原型链
例如:
var myObject = {
name : 'laowang',
address : 'xi',
sex : 'man'
};
//让myObject的name属性变得不可枚举
Object.defineProperty(
myObject,
'name',
{enumerable:false}
);
for(var i in myObject){
console.log(myObject[i]); //xi man
};
如果想要过滤掉那些你不想要的值,最为常用的过滤器是hasOwnProperty方法,以及使用typeof来排除函数
参考资料:
阮一峰JavaScript标准参考教程(alpha)-语法-对象
JavaScript语言精粹第三章
你不知道的JavaScript(上卷)第三章
JavaScript高级程序设计(第三版)第五章 Object类型
JavaScript内置对象-Object的更多相关文章
- javascript 内置对象及常见API
javascript 内置对象及常见API 2012-09-02 15:17 571人阅读 评论(0) 收藏 举报 javascript正则表达式文档浏览器urlstring Javascript内置 ...
- JavaScript高级:JavaScript面向对象,JavaScript内置对象,JavaScript BOM,JavaScript封装
知识点梳理 课堂讲义 1.JavaScript面向对象 1.1.面向对象介绍 在 Java 中我们学习过面向对象,核心思想是万物皆对象. 在 JavaScript 中同样也有面向对象.思想类似. 1. ...
- document和javaScript内置对象
1.Document 属性: referrer //返回载入当前文档的URL URL //返回当前文档的URL 方法: getElementById(); //根据id获取html元素对象 getEl ...
- JavaScript进阶 - 第7章 JavaScript内置对象
第7章 JavaScript内置对象 7-1 什么是对象 JavaScript 中的所有事物都是对象,如:字符串.数值.数组.函数等,每个对象带有属性和方法. 对象的属性:反映该对象某些特定的性质的, ...
- JavaScript内置对象与原型继承
(一) 理解JavaScript类定义 1>关于内置对象理解 console.log(Date.prototype.__proto__===Object.prototype //tru ...
- JavaScript内置对象与原生对象【转】
原文:https://segmentfault.com/a/1190000002634958 内置对象与原生对象 内置(Build-in)对象与原生(Naitve)对象的区别在于:前者总是在引擎初始化 ...
- 第五天:内置对象(7.Javascript内置对象)
1)中所术是内置对象,2)中为自定义对象 代码说明如下 2.1.1 定义并创建对象实例方式1,代码如下: <!DOCTYPE html><html lang="en&quo ...
- Javascript 笔记与总结(2-4)Javascript 内置对象
① String 字符串对象 fromCharCode() 静态方法, 用作为参数而传递的字符代码创建一个新的字符串. length 字符串的长度. charAt() 抽取字符串中指定位置的字符. c ...
- javascript 内置对象 第17节
<html> <head> <title>内置对象</title> </head> <body> <div>内置对象 ...
随机推荐
- Android与JNI(三) ---- c++调用java(转载)
源码下载:JniDemo JNI就是Java Native Interface, 即可以实现Java调用本地库, 也可以实现C/C++调用Java代码, 从而实现了两种语言的互通, 可以让我们更加灵活 ...
- SRM 592 DIV2 报告
昨天下午查看邮箱,看到了topcoder的SRM比赛通知和cf的比赛通知,当时什么也不想做,心里空荡荡的,忽然就想参加一下,试试看.吃完晚饭回来一看,就剩十几分钟了,匆忙把平台下了,就开始等待比赛开始 ...
- leetcode day5
[242]Valid Anagram: Given two strings s and t, write a function to determine if t is an anagram of s ...
- bootstrap-datepicker的简单使用
先说datepicker. github上的地址是:https://github.com/eternicode/bootstrap-datepicker. 效果如下: 在bundle里面引用添加js ...
- 使用IDA静态分析解密《舰娘Collection》的lua脚本
好久没写东西了,换工作之后忙得一比.你说创业?风太大没听清啊看了看以前写的东西,觉得以前写得太严肃了,从现在开始要轻松一点,要做一名逗逼码农. 本文不会介绍破解的细节,最终完成破解所编写的代码也不会公 ...
- systemd的命令systemctl set-property testSpeed CPUQuota=10%
总结 systemd 的资源限制一般要写到unit文件中,但是,现在测试发现会有 被值被覆盖的现象:经过排查发现是,没有 使用systemd的接口,凡是使用echo "" > ...
- 使用(Drawable)资源——图片资源
图片资源是最简单的Drawable资源,只要把*.png.*.jpg.*.gif等格式的图片放入/res/drawble-xxx目录下,Android SDK就会在编译应用中自动加载该图片,并在R资源 ...
- HTML 5 Web 存储、应用程序缓存、Web Workers
在客户端存储数据 HTML5 提供了两种在客户端存储数据的新方法: localStorage - 没有时间限制的数据存储 sessionStorage - 针对一个 session 的数据存储 之前, ...
- Java中的集合类型的继承关系图
Java中的集合类型的继承关系图
- Linux笔记(七) - 网络命令
(1)给用户发信息:write例:write admin(ctrl+d结束)(2)发广播信息:wall例:wall hello world!(3)测试网络连通性:ping-c 发送次数例:ping - ...