javascript的对象

对象创建的三种方式:

  • 对象字面量
var hero1={
      name:'jacky',
      say:function(){
              return this.name;
      }
}
//hero1.say()输出:jacky
  • 构造函数
function Hero(name){
    this.name=name;
    this.say=function(){
        return this.name;
    }
}
var hero2=new Hero('jacky');
//hero2.say()输出jacky

使用构造函数的优点是可以传入参数,构造函数中的this代表当前对象,使用var hero2=new Hero() 的方式。如果单纯调用函数var hero3=Hero() 返回的是undefined而不是对象,而且this代表的当前对象是window。

使用var hero2=new Hero() 时,hero2对象会增加一个属性constructor,代表构造函数,可以使用var hero4=new hero2.constructor('zhangsan') 创建一个新对象。

hero2 instanceof Hero 会输出true,instanceof用来判断一个对象是否由某个构造函数生成。

  • 使用返回值为对象的函数
function getHero(name){
    return {
        name:name,
        say:function(){
            return this.name;
        }
    }
}
var hero6=getHero('jacky');
//hero6.say()输出jacky

javascript内置对象

Array

创建方式:

var arr1=[4,2,3];//数组字面量
var arr2=new Array(4,2,3);//构造函数

属性和方法:

console.log(arr2.length);//4
console.log(arr2.constructor);//Array()

arr2.push(1);//[4,2,3,1]

arr2.pop();//[4,2,3]

arr2.sort();//[2,3,4]

var joinedStr=arr2.join("@");//返回拼接后字符串"2@3@4"

var slicedArr=arr2.slice(1,2);//返回截取出来的数组片段[3] ,参数1表示开始位置(包含),参数2表示结束位置(不包含)

console.log(arr2);//[2,3,4] 截取后源数组不变

var splicedArr=arr2.splice(1,2,5);//返回截取出来的数组片段[3,4] ,参数1表示开始位置(包含),参数2表示截取的长度(包含,注意与slice不一样),从参数3开始可以定义任意个,用来替换被截取位置

console.log(arr2);//[2,5] 截取后源数组改变

var splicedArr=arr2.splice(1,0,2);//在[2,5]数组中插入2
console.log(arr2);//[2,2,5]

Function

属性:

var F=function(){};
console.log(F.constructor);//Function()
console.log(F.prototype);//F {}

prototype是函数最重要的属性,会在以后详述,简单的了解下:

  • prototype包含一个对象
  • 只有函数被用作构造函数时才有用
  • 由该构造函数构造的对象拥有这个prototype引用

方法:
有两个有用的方法call()和apply(),让我们看看干啥用的。

    var tf={
        name:'屠夫',
        say:function(word){
            return word+" 我是"+this.name;
        }
    }
    console.log(tf.say("fresh meat"));//fresh meat 我是屠夫
    var hnv={
        name:'火女'
    }
    console.log(tf.say.call(hnv,"help me help you"));//help me help you 我是火女
    console.log(tf.say.apply(hnv,["help me help you"]));//help me help you 我是火女

call()的作用是改变函数中this的指向,apply()与call()的细微差别是在给函数传参时apply用数组方式。

String

常用方法:

    var str1="Show Me What u got";
    console.log(str1.toUpperCase());//SHOW ME WHAT U GOT
    console.log(str1.toLowerCase());//show me what u got
    console.log(str1.indexOf('Me'));//5
    console.log(str1.indexOf('hehe'));//-1,如果没有找到返回-1
    console.log(str1.lastIndexOf('o'));//16
    console.log(str1.substring(1,3));//ho
    console.log(str1.split(' '));//["Show", "Me", "What", "u", "got"]

Date

  • Date对象的创建:
    var date1=new Date(2015,07,26,09,48,01);
    console.log(date1);//Wed Aug 26 2015 09:48:01 GMT+0800 (中国标准时间)
    var date2=Date();
    console.log(date2);//Wed Aug 26 2015 09:57:46 GMT+0800 (中国标准时间)

new Date()参数的意义按照顺序如下:
1. 年
2. 月(0表示1月,11表示12月)
3. 日
4. 时
5. 分
6. 秒
7. 毫秒
调用getMonth(),setHours()等方法来读取和修改单个参数。
直接调用Date()则返回当前时间。

JSON

  • 序列化
    var xiaoming={name:'小明',age:18,skills:['javascript','java']};
    var xiaoming_j=JSON.stringify(xiaoming);//stringify将javascript对象转换为json
    console.log(xiaoming_j);//{"name":"小明","age":18,"skills":["javascript","java"]}
    xiaoming_j=JSON.stringify(xiaoming,['name','skills']);//stringify第二个参数用于过滤哪些进行转换
    console.log(xiaoming_j);//{"name":"小明","skills":["javascript","java"]}
    xiaoming_j=JSON.stringify(xiaoming,convert);//stringify第二个参数也可以穿函数
    console.log(xiaoming_j);//{"name":"小明","age":18,"skills":["JAVASCRIPT","JAVA"]}

    //也可以给对象增加如下方法
    xiaoming.toJSON=function(){
        return {'Name':this.name,'Age':this.age};
    }
    xiaoming_j=JSON.stringify(xiaoming);
    console.log(xiaoming_j);//{"Name":"小明","Age":18}
  • 反序列化
    xiaoming=JSON.parse(xiaoming_j);//将json转换为javascript对象
    console.log(xiaoming);//Object {Name: "小明", Age: 18}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值