javascript基础(this,工厂方法来创建对象,构造函数创建对象)(十六)

来源:互联网 发布:游戏开发用什么软件 编辑:程序博客网 时间:2024/05/01 07:05

1.this详解:

<!DOCTYPE html><html><head><meta charset="UTF-8"><title></title><script type="text/javascript">//创建一个变量namevar name = "全局中的name";/* * 每次调用函数时,浏览器都会将一个对象作为隐藏的参数传递进函数 * 这个对象就是函数执行的 上下文对象,我们可以通过this来引用该对象 * 根据函数的调用的形式不同,this的值也不同: * 1.以函数的形式调用时,this永远都是window * 2.以方法的形式调用时,谁调用this就是谁 *///创建一个函数function fun(){/* * 我们希望谁调用的函数,就可以输出谁的name属性 * window调用时,就输出window.name * obj 调用时 就输出 obj.name * obj2 调用时 就输出 obj2.name */console.log(this.name);//console.log(this == obj);}//创建一个对象var obj = new Object();obj.name = "孙悟空";obj.sayName = fun;//创建一个对象var obj2 = new Object();obj2.name = "猪八戒";obj2.sayName = fun;//console.log(obj.sayName == fun);//window.fun();//obj.sayName();//obj2.sayName();//obj.sayName();//fun();//obj.sayName();//fun();//window.fun();//obj2.sayName();var obj3 = {name:"沙和尚",age:38,sayName:function(){function test(){console.log(this.name);}test();}};obj3.sayName();</script></head><body></body></html>

2.工厂方法来创建对象:

<!DOCTYPE html><html><head><meta charset="UTF-8"><title></title><script type="text/javascript">/* * 创建一个对象,来表示一个人的信息 *//*var person = {name:"孙悟空",age:18,gender:"男",address:"花果山"};var person2 = {name:"白骨精",age:16,gender:"女",address:"白骨洞"};var person3 = {name:"蜘蛛精",age:15,gender:"女",address:"盘丝洞"};*//* * 使用工厂方法来创建对象 */function createPerson(name , age , gender , address){//创建一个对象var obj = new Object();//向对象中添加属性obj.name = name;obj.age = age;obj.gender = gender;obj.address = address;obj.sayName = function(){console.log("大家好,我是:"+this.name);};//将对象返回return obj;}//调用函数var person = createPerson("孙悟空",18,"男","花果山");var person2 = createPerson("白骨精",16,"女","白骨洞");var person3 = createPerson("蜘蛛精",14,"女","盘丝洞");//console.log(person);function createDog(name , age){var obj = new Object();obj.name = name;obj.age = age;obj.sayHello = function(){console.log("汪汪");};return obj;}//person3.sayName();//创建狗的对象var dog = createDog("旺财",6);//console.log(person);//console.log(dog);</script></head><body></body></html>

3.构造函数创建对象:

<!DOCTYPE html><html><head><meta charset="UTF-8"><title></title><script type="text/javascript">/* * 构造函数(constructor) *  构造函数是专门用来创建对象的函数 *  构造函数就是一个普通的函数,不同的是构造函数需要通过new关键字来调用 *  构造函数一般都是首字母大写 *  * 构造函数的执行的流程: * 1.创建一个新的对象 * 2.将新创建的对象设置为函数中的this * 3.逐行执行函数 * 4.将新建的对象作为返回值返回 *  * 如果以构造函数的形式调用,this就是新创建的那个对象 *  * 构造函数我们也可以称它为一个类, * 使用同一个构造函数创建的对象,我们称为一类对象 * 通过构造函数创建的对象,我们称这个对象是该类的实例 *  *///创建一个人类的构造函数function Person(name , age){//通过this,向新对象中添加属性this.name = name;this.age = age;this.sayName = function(){console.log(this.name);};}function Dog(){}var p = new Person("孙悟空",18);var person2 = new Person("沙和尚",38);var dog = new Dog();//console.log(person);//person2.sayName();var a = new Person();var b = new Dog();/* * instanceof * - 可以检查一个对象是否是一个类(构造函数)的实例 * - 语法:对象 instanceof 构造函数 *///console.log(b instanceof Person);/* * 所有的对象都是Object的后代 *///console.log(a instanceof Object);</script></head><body></body></html>



0 0