创建对象
字面量方式创建
var p1 = {
name :"张三",
age : 22,
run:function()
{
console.log(this.name + "跑步去了!")
}
}
通过new Object 创建对象
var p2 = new Object()
//里面的Object为空 需要手动添加
p2.name= "张三"
p2.age = 22
p2.run = function()
{
}
使用构造函数创建对象,适用于批量创建对象
构造函数的声明和普通函数相同 命名规范是大驼峰命名法
function People(name , age)
{
this.name = name
this.age = age
this.speak = function()
{
console.log("我是" + this.name)
}
}
var p3 = new People("张三",22)
p3 . sex = "男" 手动添加的属性 只有p3这个对象用有
p3.speak()
//可以通过构造函数 创建多个同类对象
var p4 = new People("李四",22)
p4.speak()
对象的原型
function People(name)
{
this.name = name
//不建议直接将函数写在构造函数中, 不然 每创建一个都要单独保存一个函数 浪费内存
this.say = function()
{
console.log(this)
}
}
var p1 = new People("张三")
这种方法比较实用
People.prototype.say = function()
{
console.log(this)
}
p1.say()
函数对象的函数指定this调用
function f1(){
//这个时候的this不在指向window,而是指向了"hello" 字符串对象
console.log(this)
//arguments 函数内局部变量,保存就是传入的参数
console.log(arguments)
}
//函数对象中 call()函数 作用就是通过指定的this调用本函数,在函数中this指向指定的第一个参数对象,第一个参数就是指定的对象,从第二个开始就是调用函数需要传递的参数
f1.call("hello",1,2,3)
//函数对象中, apply()函数, 作用就是通过指定的this调用本函数,在函数中this指向指定的对象,第二个是参数数组,放的就是调用函数需要的参数
f1.apply(true)
//函数对象中.bind()函数,作用返回一个新的函数,这个新的函数和原来的函数业务代码一致,新函数执行的时候指向bind时绑定的对象
var f2 = f1.bind("绑定this")
f2()