17、对象

属性:描述对象的信息  方法:描述对象的行为  封装:只关心输入和输出(不管过程如何实现)

ü 对象的分类:

内置对象(原生对象): 就是JavaScript语言预定义的对象(如String/Number)。

宿主对象: 一般由浏览器环境提供实现,主要分为 BOM 和 DOM。

自定义对象: 就是由开发人员自主创建的对象。

ü 对象的创建:

  • Ø 初始化器方式

var 对象名 = {

        属性名 : 属性值 ,

        方法名 : function( ){方法体}    --- [相当于字面量定义函数的右半部分]          

     }

  • 构造函数方式

1var 对象名 = new Object( );       --- new - 关键字,表示创建一个新的对象

对象名.属性名 = 属性值;           --- Object - 在JavaScript中是对象的祖先

对象名.方法名 = function( ){  };

2)自定义构造函数

  • Object.create( ) 方法

(1)   必须提前存在一个对象hero1

eg: var hero2 = Object.create(hero1);   ---创建的新对象具有与传递的对象相同的属性和方法

(1)   创建一个空对象

eg: var对象名= Object.create(null);   hero4.name = 'zhaomin';

u 使用对象

方法一                                  方法二

console.log(对象名.属性名)              console.log(对象名['属性名'] )

对象名.方法名( )                       对象名['方法名']( )

[注:不适用于复杂的命名方式]           [注:适用于复杂的命名方式] [用法更通用]

eg:  content-type: number  ---编写错误

content-type: number; console.log(hero.content-type);  ---输出报错

"-"解析为减法运算符;  hero.content -属性获取失败;  type - 不是一个变量

console.log(hero['content-type']);  ---正确

附:window对象

* 是BOM中的对象,表示当前浏览器的窗口; 也是浏览器环境中最顶级的对象(全局对象)

* 定义的全局变量和全局函数,为window对象添加的属性和方法

eg: var name = 'zhao min';

var sayMe = function ( ) {

console.log('my name is zhaomin');

}

console.log(window.name);

window.sayMe( );

u   操作对象的属性和方法

² 新增对象

对象名.新的属性名 = 属性值;         对象名.新的方法名 = function( ){ };

²  修改对象

对象名.原有属性名 = 新的属性值;     对象名.原有方法名 = function( ){ };

²  删除对象

delete 对象名.属性名                delete 对象名.方法名

u   遍历(枚举)对象

只知道对象名,但不清楚属性和方法名   typeof 或instanceof;

  • for…in循环:

该方法依次访问一个对象及其原型链中所有可枚举的属性。

格式:for (var A in对象名) {               A---代表了对象的属性名和方法名

if (typeof hero[A] == 'function'){    区分属性和方法 - typeof 运算符

hero[A]();             --- 一定是对象的方法

} else {

console.log(hero[A]);      --- 一定是对象的属性

}

结果:得到指定对象的所有属性或方法名

  • Object.keys( obj ) 方法:

obj ---表示遍历的当前对象      返回值: 一个包含当前对象所有属性名和方法名的数组    eg: var a = Object.keys(hero);  console.log(a);   // ["name", "age", "sayMe"]

  • Object.getOwnPropertyNames( object ) 方法:

该方法同上。

u   检测对象的属性或方法(即检测对象中是否存在指定属性:)

*使用 in 关键字                        console.log( 'name' in fn );

使用 Object对象的 hasOwnProperty()方法  console.log( fn.hasOwnProperty( 'name' ));

使用 undefined 进行判断                 console.log( fn.name = = = undefined );

使用 if 语句进行判断。       if( fn.name ){

console.log( 'name属性存在' );

}

注:调用对象不存在的的属性 ---undefined

调用对象不存在的的方法 ---输出报错 is not a function

18、函数与对象

JavaScript基础知识(对象、函数与对象)的更多相关文章

  1. JavaScript基础知识(函数)

    函数的基础 函数: 把实现相同功能的代码放到一个函数体中,当想实现这个功能时,直接执行这个函数即可:减少了的冗余:高内聚,低耦合--> 函数的封装: 函数:引用数据类型: var a = 10; ...

  2. 前端学习 第二弹: JavaScript中的一些函数与对象(1)

    前端学习 第二弹: JavaScript中的一些函数与对象(1) 1.apply与call函数 每个函数都包含两个非继承而来的方法:apply()和call(). 他们的用途相同,都是在特定的作用域中 ...

  3. 学习javascript基础知识系列第二节 - this用法

    通过一段代码学习javascript基础知识系列 第二节 - this用法 this是面向对象语言中的一个重要概念,在JAVA,C#等大型语言中,this固定指向运行时的当前对象.但是在javascr ...

  4. 学习javascript基础知识系列第三节 - ()()用法

    总目录:通过一段代码学习javascript基础知识系列 注意: 为了便于执行和演示,建议使用chrome浏览器,按F12,然后按Esc(或手动选择)打开console,在console进行执行和演示 ...

  5. JavaScript 基础知识 - BOM篇

    前言 本篇文章是JavaScript基础知识的BOM篇,如果前面的<JavaScript基础知识-DOM篇>看完了,现在就可以学习BOM了. 注意: 所有的案例都在这里链接: 提取密码密码 ...

  6. Javascript基础知识总结一

    Javascript基础知识总结一 <!DOCTYPE html> <html> <head lang="en"> <meta chars ...

  7. JavaScript基础精华02(函数声明,arguments对象,匿名函数,JS面向对象基础)

    函数声明 JavaScript中声明函数的方式:(无需声明返回值类型) function add(i1, i2) {             return i1 + i2;//如果不写return返回 ...

  8. JavaScript基础知识(JSON、Function对象、原型、引用类型)

    19.JSON 概念:JavaScript 对象表示法(JavaScript Object Notation),是一种轻量级的数据交换格式  特点:易于程序员编写和查看:易于计算机解析和生成 数据结构 ...

  9. 林大妈的JavaScript基础知识(三):JavaScript编程(1)对象

    1. 对象的简单介绍与一些注意事项 JavaScript中具有几个简单数据类型:数字.字符串.布尔值.null值以及undefined值.除此之外其余所有值(包括数组.函数,甚至正则表达式)都是对象. ...

随机推荐

  1. 总结一下现在关于Design Support Library的几个博客

    原文转载:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0713/3179.html 关于Design Support Libr ...

  2. python安装和环境变量的配置

    python安装和环境变量的配置 研究生阶段学习的需求,简单的学习了python的语法和基础之后产生了兴趣,有了想从基础把python学好用好的想法.因此在忙碌的学习中抽出时间,在每天花几个小时学习p ...

  3. KVO的内部实现以及使用

    转载自:http://www.cocoachina.com/applenews/devnews/2014/0107/7667.html   KVO是实现Cocoa Bindings的基础,它提供了一种 ...

  4. Fiori缓存与它的清除

    最近在修改已有的Fiori应用,遇到了缓存上的一点问题,导致对Fiori应用的代码修改不能在前端页面生效.现将自己查到的一篇好资料翻译过来,以供参考.以下为正文. 2017.12.19更新:最近又遇到 ...

  5. [置顶] webapi token、参数签名是如何生成的

    一个问题 在这里我想问大家一句,如果你向一个刚刚接触.net web后端程序开发的同学(别人刚刚也就学了webform的request,response,会提交表单的这种刚接触不久的同学),你怎么去解 ...

  6. bzoj 3626: [LNOI2014]LCA

    Description 给出一个n个节点的有根树(编号为0到n-1,根节点为0).一个点的深度定义为这个节点到根的距离+1.设dep[i]表示点i的深度,LCA(i,j)表示i与j的最近公共祖先.有q ...

  7. springBoot系列教程06:参数验证及验证信息国际化

    在springboot应用中要验证参数是否正确很简单,web应用已经包含了validation的 1.定义需要被验证的参数实体,并用注解标明错误类别和错误信息 package com.xiao.dom ...

  8. centos yum源配置 与yum配置文件

    参考博客 http://www.cnblogs.com/mchina/archive/2013/01/04/2842275.html 1.centos . yum配置文件在目录 /etc/yum.re ...

  9. centos7 安装solr

    1 下载solr安装包 下载6.4.1版本 2.创建 存放数据的文件夹 solr_data 和 安装目录 solr_installation 3.进入solr的bin目录执行 /install_sol ...

  10. CSS3 自定义动画(animation)

    除了在之前的文章中介绍过的 CSS3 的变形 (transformation) 和转换 (transition) 外,CSS3 还有一种自由度更大的自定义动画,开发者甚至可以使用变形(transfor ...