面向对象的创建

两天面向对象小结

1.面向对象与面向过程的区别

​ 面向过程侧重整个问题的解决步骤,着眼局部或者具体

​ 面向对象侧重具体的功能,让某个对象具有实现某种功能,更加侧重于整体

2.字面量的方式创建对象

//用大括号括起来的一系列的键值对,构成了js对象.这个对象称之为字面量对象
var person = {
   name : "Tom",
    age : 22,
  sex : "男",
  speak : function(){
      console.log("abc");
  }
}

注意:属性名和属性值之间用冒号表示,不同属性之间用逗号隔开

3.内存的存储方式

​ ECMAScript中所有函数的参数都是按值传递访问变量有按值和按引用两张方式,而参数只能按值传递例子:


function addTen(num){
    num  += 10;
    return num;
}
var count = 20;
var result = addTen(count);
alert(count);   //20,没有变化,如果是按引用传递那会变成30
alert(result); //30

例子:

function setName(obj){
obj.name = "Nicholas";
obj = new Object();
obj.name = "Grey";
}

var person = new Object();
setName(person);
alert(person.name); //"Nicholas"

function foo(num, obj){
     num = 20
    obj.name = "abc"
}

var num = 10;
var obj = {
     name: "aaa"
  }
foo(num, obj)
console.log(num);   //10
console.log(obj.name);  //"abc"

变量的传值传递值,其本身不发生改变,对象传递的是地址

内存由栈内存和堆内存构成,栈内存存储参数,堆内存存储地址;

4.工厂模式


function createPerson(name,age,sex){
    var person = new Object();
  person.name = name;
  person.age = age;
  person.sex = sex;
  person.speak = function(){
      console.log("abc");
  }
  return person;     //注意要有返回值
}
//调用
var p1 = createPerson("Tom",22,"男");

5.构造函数


function Person(name,age,sex){
    this.name = name;
  this.age = age;
  this.sex = sex;
  this.speak = function(){
      console.log("abc");
  }
}
//调用
var p2 = new Person("Jack",22,"男");
p2.speak();

说明:

  1. 使用构造函数创建对象,必须使用关键字new ,后面跟着构造函数的名,根据需要传入相应的参数。

  2. 其实使用 new 构造函数() 的方式创建对象,经历了下面几个步骤。

    • 创建出来一个新的对象

    • 将构造函数的作用域赋给新对象。意味着这个时候 this就代表了这个新对象

    • 执行构造函数中的代码。 在本例中就是给新对象添加属性,并给属性初始化值。

    • 构造函数执行完毕之后,默认返回新对象。 所以外面就可以拿到这个刚刚创建的新对象了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值