JavaScript中的对象和函数

对象

  对象的创建:

//方式1:
    var obj = new Object() ;
    obj.name = 'zhaangsan';  

//方式2:
    var	obj2 = {
​		name:'zhangsan'; 		
​	}

对象属性的访问:

//方式1(通过 . 访问):
obj.name

//方式2(通过[ 属性名 ]  访问):
obj2 [ name ]

//方式3(拿到所有的属性名):
for (const objKey in obj) {}

 属性值的类型:

        基本数据类型:String Number Boolean Null undefined

        引用数据类型:内存中的对象(并不是对象本身而是对象的引用)

函数

函数的定义:

        一连串的语句的集合,可被外部程序调用,向其中传入参数可以返回特定的值

函数的创建:

//方式1:
var	fun1 = new Function ("alert ('这是一个函数')");

//方式2 (带参数的函数);
function fun2 (形参...) {
    return	xx;
}

//方式2示例:
function fun2 (num1,num2,num3){   //行参不都使用  在调用时不用都传值
    return	num1+num2;
}
//调用fun2方法
fun2 (1,2);   //输出值为3

//方式3 (匿名函数):
function fun2 () { 
    console.log ('这是一个匿名函数');
}

//方式4 (嵌套函数):
function fu () { 
    console.log ('这是父函数');
    function zi () { 
        console.log ('这是子函数');
    }
​	zi();  //如果这里不调用子函数外部在调用父函数时子函数不会被调用
}

//方式5 (立即执行函数):
(function (str) {
    console.log ('这是子函数',str);
}) ('这是str参数');

对象中的函数

var person = {
    name:'zhangsan',
    age:20,
    sayHello:function () {
    	console.log(this.name)
    	console.log("这是person的方法:name属性:"+name)
    }
}
/**
     * this对象
     * 解析器在调用函数时每次都会向
     * 函数内部传递一个隐含的参数(this)
     * this指向的是一个对象,
     * 这个对象我们称为上下文对象
     * 根据调用者的不同,this会执行不同的对象
     *
     * 如果以函数方式 调用 this指向的是window
     * 如果是以方法的方式调用  this指向的是当前对象
*/

//将sayHello方法提取出来作为公共方法
function sayHello(){
	console.log(this);  //这里的this指向window
    console.log("这是person的方法:name属性:"+name)
}

var zhangsan = {
    name:'zhangsan',
    age:20,
    sayHello:sayHello
}

var lisi = {
    name:'lisi',
    age:21,
    sayHello:sayHello
}
zhangsan.sayHello();    //这里的this指向当前对象
lisi.sayHello();	   //这里的this指向当前对象

//函数工厂的方式创建对象
function createPerson(name, age, sex) {
        let obj = new Object();
        obj.name = name;
        obj.age = age;
        obj.sex = sex;
        obj.sayHello = function () {
            console.log(this);
            console.log("这是person的方法:name属性:" + name)
        }
        return obj;
}
let p1 = createPerson('zhangsan', 20, '男');
let p2 = createPerson('lisi', 20, '男');
let p3 = createPerson('wangwu', 22, '女');
console.log(p1,p2,p3);

构造函数创建对象

//构造函数首字母默认大写且在调用时需要被new
function Person(name, age, sex) {
    this.name = name;
    this.age = age;
    this.sex = sex;
    this.sayName = function () {
    	console.log(this.name)
    }
}
    // 创建Person对象
    let p1 = new Person('张三',20,'男');
    let p2 = new Person('李四',20,'男');
    console.log(p1,p2)

function NewPerson(name, age, sex) {
    this.name = name;
    this.age = age;
    this.sex = sex;
    this.sayName = function () {
        console.log(this.name)
    }
}
    let p3 = new NewPerson('张三',20,'男');
    //判断 对象时那个构造创建的
    console.log(p1 instanceof Person)
    console.log(p1 instanceof NewPerson)

你可能感兴趣的:(javascript,前端,开发语言)