【JavaScript】核心语法之对象

算法云影
• 阅读 708

JS(JavaScript)

对象
一.对象
1.对象是什么;
理解成你所看到的任何物体独有属性并且使用方法
2.对象的分类;

  • 内置对象/原生对象;

是以ECMAScript为标准定义好的对象,可直接拿来使用

  • 宿主对象;

是以浏览器自身运行环境下提供的对象,并且才可使用

  • 自定义对象;

开发人自身创建的对象,并使用
二.创建对象;
1.对象初始化方法;
通过字面量创建对象

/*对象的初始化创建方式
var 对象名 = {
    属性名 : 属性值,
    方法名 : function(){
        方法体
    }
}
    */
var obj1 = {
    name:'犬夜叉',
    age: 16,
    sayMe :function () {
        console.log('我是犬夜叉');
    }
}

2.构造函数方法;
通过JS的预定义类型来创造对象

/*对象构造函数
* 利用所用引用类型创建对应对象;具体类型
  var num = new Number();// Number类型
  var str = new String();// String类型
  var boo = new Boolean();// Boolean类型

  利用Object作为构造函数创建对象
  var 对象名 = new Object();
  var 对象名 = Object();
 */

var num = new Number();//Number类型
var num2 = Number();
var str = new String();//String类型
var boo = new Boolean();//Boolean类型

var obj2 = new Object();
var obj3 = new Object();
console.log(obj2);
console.log(obj3);

3.Object.create方法;
指定原型和多个指定属性对象

var obj6 = Object.create(null);
var obj7 = Object.create(obj1);

/*利用Object.create()方法创建对象
* var 对象名 = Object.create(null);创建一个空对象
  var 对象名 = Object.create(obj)
  obj- 表示另一对象
  当前创建新对象拥有与obj对象相同属性和方法
 */

三.对象的属性;
1.调用对象的属性;
对象名.属性名;不能用复杂命名属性名称
对象名[属性名];能用复杂命名属性名称

var obj = {
    name : '犬夜叉',
    'Type-Content' : 'text/html',
    sayMe : function(){
        console.log('我是犬夜叉');
    }
}
/*
    对象名.属性名
      * 不适用于复杂命名的属性名称
 */
console.log(obj.name);// 犬夜叉
// console.log(obj.Type-Content);
/*
    对象名[属性名]-通用调用方式
      * 适用于复杂命名的属性名称
 */
console.log(obj['name']);// 犬夜叉
console.log(obj['Type-Content']);// text/html

// 访问一个对象不存在的属性 -> 值为 undefined
console.log(obj.age);

2.新增对象的属性;
以两种属性表示
对象名.新的属性名 = 属性值
对象名[新的属性名] = 属性值

var obj = {
    name : '漩涡鸣人',
    sayMe : function(){
        console.log('我是漩涡鸣人');
    }
}
/*
    对象名.新的属性名 = 属性值
    对象名[新的属性名] = 属性值
 */
obj.age = 18;
console.log(obj);

/*
  空对象默认没有自身的属性和方法(父级Object)
 */
var obj1 = {};
console.log(obj1);

obj1.name = '日向雏田';
console.log(obj1);

3.修改对象的属性;

var obj = {
    name : '漩涡鸣人',
    sayMe : function(){
        console.log('我是漩涡鸣人');
    }
}
/*
    对象名.已存在属性名 = 属性值
    对象名[已存在属性名] = 属性值
 */
obj.name = '日向雏田';
console.log(obj);

4.删除对象的属性;
以delete表示删除该属性
delete 对象名.属性名
delete 对象名[属性名]

var obj = {
    name : '犬夜叉',
    sayMe : function(){
        console.log('我是犬夜叉');
    }
}
/*
    delete 对象名.属性名
    delete 对象名[属性名]
 */
delete obj.name;
console.log(obj.name);// undefined

四.对象的方法;
1.调用对象的方法;
有两种方法表示调用对象
对象名.方法名()
对象名[方法名]()

var obj = {
    name : '犬夜叉',
    age : 18,
    sayMe : function(){
        console.log('我是犬夜叉');
    }
}
// 对象名.方法名()
obj.sayMe();
// 对象名[方法名]()
obj['sayMe']();

2.新增对象的方法;
以function()来表示新增对象
对象名.新的方法名 = function(){}
对象名[新的方法名] = function(){}

var obj = {
    name : '漩涡鸣人',
    age : 16,
    sayMe : function(){
        console.log('我是漩涡鸣人');
    }
}
// 对象名.新的方法名 = function(){}
obj.sayYou = function(){
    console.log('你是日向雏田');
}
console.log(obj);
// 对象名[新的方法名] = function(){}

3.修改对象的方法;

var obj = {
    name : '漩涡鸣人',
    age : 16,
    sayMe : function(){
        console.log('我是漩涡鸣人');
    }
}
// 1.对象名.方法名 = function(){}
obj.sayMe = function(){
    console.log('你是日向雏田');
}
console.log(obj);
obj.sayMe();
// 2.对象名[方法名] = function(){}

4.删除对象的方法;
delete 对象名.方法名
delete 对象名[方法名]

var obj = {
    name : '犬夜叉',
    age : 16,
    sayMe : function(){
        console.log('我是犬夜叉');
    }
}
// delete 对象名.方法名
delete obj.sayMe;
// 访问对象中不存在的方法-报错(TypeError: obj.sayMe is not a function)
// obj.sayMe();
console.log(obj.sayMe);// undefined
console.log(obj);

// 以属性是否存在的方式进行判断
if ('sayMe' in obj) {
    // 确认目前是个方法
    if (obj.sayMe instanceof Function) {
        obj.sayMe();// 方法调用
    }
}
// 以上代码可以优化为以下代码
if ('sayMe' in obj && obj.sayMe instanceof Function) {
    obj.sayMe();// 方法调用
}

// delete 对象名[方法名]
点赞
收藏
评论区
推荐文章
Karen110 Karen110
3年前
一篇文章带你了解JavaScript Object 对象
一、概念JavaScript原生提供Object对象(注意起首的O是大写),介绍该对象原生的各种方法。JavaScript的所有其他对象都继承自Object对象,即那些对象都是Object的实例。二、Object()Object本身是一个函数,可以当作工具方法使用,将任意值转为对象。这个方法常用于保证某个值一定是对象。如果参数为空(或者为undefi
凝雪探世界 凝雪探世界
4年前
js-Answers一
JavaScript的组成JavaScript由以下三部分组成:1.ECMAScript(核心):JavaScript语言基础2.DOM(文档对象模型):规定了访问HTML和XML的接口3.BOM(浏览器对象模型):提供了浏览器窗口之间进行交互的对象和方法JS的基本数据类型和引用数据类型
海军 海军
4年前
关于JavaScript 对象的理解
关于JavaScript对象的理解对象理解对象ECMA262把对象定义为:“无序属性的集合,其属性可以包含基本值、对象或者函数。”严格来讲,这就相当于说对象是一组没有特定顺序的值。对象的每个属性或方法都有一个名字,而每个名字都映射到一个值。我们可以把ECMAScript的对象想象成散列表:无非就是一组名值对,其中的值可以是
菜园前端 菜园前端
2年前
JavaScript内置对象
原文链接:String字符串对象字符串转换toStringjavascriptvarage20varage2age.toString()//"20"字符串转换Stringjavascriptvarage20varage2String(age)//"20"字
Stella981 Stella981
3年前
Javascript核心对象
JavaScript的实现包括以下3个部分:1)核心(ECMAScript):描述了JS的语法和基本对象。2)文档对象模型(DOM):处理网页内容的方法和接口3)浏览器对象模型(BOM):与浏览器交互的方法和接口ECMAScript扩展知识:① ECMAScript是一个标准,JS只是它的一个实现,其他实现包括ActionScript。
Stella981 Stella981
3年前
JavaScript的 基本数据类型
第一:Javascript对象是第二:Javascript中第三:Javascript的对象是数据;第四:JavaScript中的对象可以简单理解成"名称:值"对(name:value)。名称(name):"名称"部分是一个JavaScript字符串参考https://www
Wesley13 Wesley13
3年前
JS原型、原型链深入理解
原型是JavaScript中一个比较难理解的概念,原型相关的属性也比较多,对象有”prototype”属性,函数对象有”prototype”属性,原型对象有”constructor”属性。原型是JavaScript中一个比较难理解的概念,原型相关的属性也比较多,对象有”prototype”属性,函数对象有”prototype”属性,原型对
Stella981 Stella981
3年前
JavaScript 基于原型链的继承
JavaScript对象是动态的属性“包”(指其自己的属性)。JavaScript对象有一个指向一个原型对象的链。当试图访问一个对象的属性时,它不仅仅在该对象上搜寻,还会搜寻该对象的原型,以及该对象的原型的原型,依次层层向上搜索,直到找到一个名字匹配的属性或到达原型链的末尾。遵循ECMAScript标准,someObject.Prototype
Stella981 Stella981
3年前
JavaScript内置对象String对象下常用的方法
1<!DOCTYPEhtml2<htmllang"en"3<head4<metacharset"UTF8"5<title</title6<script7/8
Stella981 Stella981
3年前
JavaScript基础2
普通的JavaScript对象是命名值的无序集合,JavaScript同样定义了一种特殊的对象数组array,表示带编号的值的有序集合,JavaScript为数组定义了专用的语法,使得数组具有区别于普通对象而独有的行为特性JavaScript还定义了另一种特殊对象函数,函数是具有与它相关联的可执行代码的对象,通过调用函数来运行可执行代码并返回运算结
Stella981 Stella981
3年前
Javascript 基础知识学习(四)
这里接着前面一篇继续!Javascript中的所有所有事物都是对象:字符串、数值、数组、函数·····每个对象都有自己的属性和方法,JS能够自定义对象:在第七点是相关面向对象的知识点。<script//直接创建对象varpeople{n