JavaScript-基本知识(四)

1.Array.isArray():

作用:判断某个对象是否是数组

判断对象的类型:typeof

基本数据类型:
typeof 字符串  string
typeof 数值    number
typeof true|false   Boolean
typeof null   object
typeof undefined   undefined

复杂数据类型:
typeof 对象   object
typeof 函数     function

兼容性写法:

if(typeof Array.isArray != "function"){
    Array.isArray = function(obj){
        return Object.prototype.toString.call(obj) == "[object Array]";
    }
}

toString():返回一个对象的字符串描述。

(1)如果是object类型,就直接返回[object Object];
(2)如果是函数或数组类型,就得用Object.prototype.toString.call(对象)来获取一个对象的字符串描述。

call():借用其它对象的方法。

2.基本包装类型

String Number Boolean

作用:通过基本包装类型得到的对象可以调用方法和访问属性。

[object String]、[object Number]、[object Boolean]

  1. 基本包装类型对象的创建:

    · new String()|Number()|Boolean()

    · new Object() 参数(字符串|数值|布尔值)

    · Object()

注意:

(1) String():把对象的值转换成字符串

(2) 比较(==|===) 注意==左右两边的类型是否相同,如果不同那么可能存在隐式的类型转换

eg: var str1 = new String("demo01");
var str2 = "demo01";

console.log(str1.toString());    //demo01
console.log(str1 == str2);      //true(str1会先隐式的(通过toString()方法)转换为字符串,然后再跟str2比较)

(3) 基本包装类型的数据(基本类型的值),在访问属性或者是调用方法的时候,系统内部会先创建一个相对应的对象。通过这个对象来访问属性|调用方法,得到结果之后返回,然后直接销毁这个临时对象

eg:var tmpStr = new String("demo01");
   var result = tmpStr.length;
   str2.length = result;
   tmpStr = null;

Number使用注意:

扩展Number
1.变量.方法;2.(数值).方法;

(数值):表达式

不能用数值.方法

3.Object.prototype详解:

(1)constructor 构造器属性

原型对象 与之相关联的构造函数(实例属性|原型属性)

对象 创建该对象的构造函数

(2)hasOwnProperty

作用:检测是否有某个指定的属性(不包含原型属性)

对象.hasOwnProperty("属性")

(3)isPrototypeOf|Object.getprototypeOf(对象)

作用:判断某个对象是否是指定对象的原型对象

注意点:在判断的时候会判断整条原型链

(4)prototypeIsEnumerable

作用:检查某个属性是否是可以枚举(列举)for...in
一般情况下属性都是可以枚举的,也可以自己设置成不可以枚举

(5)toString()

作用:返回一个对于该对象的字符串描述

Object类型的对象 var o = {} 返回的是[object Object]

其它类型的对象:数组|函数|String 返回字符串描述

注意点:和Number类型使用的时候,可以接受参数(几进制)

eg:var num = new Number(12);
   console.log(num.toString(2));  //num的二进制:1100

(6)toLocalString

大部分情况同toString,会做本地化处理

(7)valueOf

作用:获得对象的值

  • 基本包装类型的对象(String|Number|Boolean) 返回其对应的基本类型值

  • 其它对象 返回的是对象本身

  • 日期对象 Date 返回的是一个时间戳(1970)

4.静态成员和实例成员以及原型成员

  • 静态成员:直接添加在构造函数上面的属性和方法。

  • 实例成员:构造函数创建的实例对象上面的属性和方法。

  • 原型成员:构造函数的原型对象上面的属性和方法。

5.Object的静态成员

(1)Object.apply

作用:借用其他对象的方法

用法: 对象.方法.apply(this绑定的对象,[参数1,参数2])

(2)Object.arguments

作用:函数每部的一个隐藏参数,这个隐藏参数用来接收实参。

它本身是一个类似于数组的结构,可以像数组一样通过下标来操作数据。但不是数组类型。

(3)Object.assign

作用:拷贝对象的属性,多个属性。

(4)Object.bind

该方法的作用同call|apply差不多。

(5)Obect.call

作用:借用其他对象的方法。

用法:对象.方法.call(this绑定的对象,参数1,参数2)

(6)Object.caller

作用:指向调用当前函数的函数。

(7)Object.create

作用:创建对象,设置原型对象。

(8)Object.getOwnPropertyDescriptor

作用:获得某个对象实例属性的描述信息

描述对象:

1 是否可以配置   configurable

    如果是true,该属性可以被删除,且configurable可以设置为false;
    如果是false,该属性不可以被删除,且configurable不可以再被设置为true。

2 是否可以枚举    enumerable

    如果是true,那么在使用for...in循环遍历对象的时候可以列举出来,否则不能列举。

3 是否可以重写   writable

    修改某个属性的值
4 具体的值     value

(9) Object.getOwnPropertyDescriptors

作用:获取多个对象实例属性的描述信息。

(10)Object.defineProperty

作用:设置对象中某个属性的描述信息

(11)Object.getOwnPropertyNames

作用:返回对象中所有实例属性的名称数组

关于是否可以枚举,不论是否可以被枚举都会返回

(12)Object.keys

作用:返回对象中所有实例属性的名称数组,只返回可以被枚举的属性

(13)Object.getPrototypeOf

作用:获得某个对象的原型对象

(14)Object.preventExtensions

作用:禁止扩展对象 不能添加任何的属性和方法

(15)Object.seal

作用:密封(封闭)对象

特点:不能够扩展对象,也不能删除对象的属性

(16)Object.freeze

作用:冻结对象

特点: 不能够扩展对象,也不能删除对象的属性,不能修改

6. 函数的创建方式

  • 函数的声明
    function 函数名称(参数1,参数2...){函数体}

  • 函数表达式

    var 变量名 = function[函数名可以省略](){函数体}

    若函数有名称,那么就是命名函数表达式

    若函数没有名称,就是匿名函数表达式

  • 使用Function构造函数来创建

    var 变量名 = new Function(参数);

    1. 使用构造函数创建对象,参数类型为字符串

    2. 参数说明:

      • 如果没有参数:就是一个空的函数

      • 如果有一个参数,那么这个参数就作为新创建出来的函数的函数体

      • 如果有多个参数,那么最后一个参数作为函数的函数体,前面的参数全部都是形式参数

7.函数内部有两个隐藏的参数

1. arguments:类似数组的结构([object Arguments]),用来接收实参

    1 实参的数量小于形参的数量  不足的为undefined
    2 实参的数量大于形参的数量  超出的部分会忽略  在函数内部要获得超出的部分,用arguments


2. this永远都指向一个对象(非严格模式下)

01 以普通函数方式调用        this->window
02 以对象的方法来调用        this->对象
03 new 构造函数的方式调用    this->指向内部新创建的对象
04 函数上下文的方式来调用(call|apply)  this->绑定的第一个参数,如果不传递参数,那么默认指向window 

3. length属性

    arguments.length   实际参数的长度
    函数名.length       形式参数的长度

8.with

作用:把对象的作用域延伸到{}中,主要用于缩减代码 (对象.属性.属性.属性),在{}中可以通过无前缀的方式来设置属性的值。

注意点:

01 this指向window

02 如果是添加属性,那么必须要使用前缀

03 严格模式下被禁止使用

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,658评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,482评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,213评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,395评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,487评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,523评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,525评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,300评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,753评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,048评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,223评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,905评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,541评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,168评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,417评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,094评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,088评论 2 352

推荐阅读更多精彩内容

  • 1、为什么要向上管理? 向上管理是为了在组织架构上为自己打开一条上移路径。 顺应老板习性,掌握老板期待,交出他要的...
    Eva风信子阅读 2,596评论 0 11
  • 作者:地球上的火星人 “华龙!” “有人叫我?” 华龙睁开双眼,发现赤身裸体躺在地上,队员们关切地注视着自己,有些...
    地球的火星人阅读 492评论 0 1
  • 本文中采用的API来自http://gank.io/api 转载请注明出处 源码点击下载 本文中所采用的组合为Re...
    cqf_hn阅读 7,672评论 1 8
  • 2017年2月18日1点14分 今天门市很忙碌,8点多打烊。然后又上货,到的十几种新品全部上架。 忙碌的间隙,我还...
    阿墨2017阅读 149评论 1 0
  • 1 我这个人对金钱一向没什么概念,花钱大手大脚。尽管每个月挣得工资不算少,但往往还未到月末工资卡里的钱便会所剩无几...
    斜杠青年煜子阅读 980评论 4 6