JavaScript-4对象

JavaScript对象

  • 对象是JavaScript的一种复合数据类型,它可以把多个数据集中在一个变量中,并且给其中的每个数据起名字
  • 或者说,对象是一个属性集合,每个属性有自己的名字和值
  • JavaScript并不像其他OOP语言那样有类的概念,不是先设计类再制造对象

先有对象,后面才有属性,向对象中不断的填充属性

    var v = new Object();
    var ciclr = {x:0, y:0, radius:2};
    var book = new Object();
    bool.title = "Goods";

删除对象属性:delete book.chapter1即可将对象中的属性删除

遍历所有属性:for (var x in object) ……

    var o = new Object();
    o.name = "John";
    o.age = 30;
    o.salary = 300;

    for(var i in o) {
        alert(i);
    }

    // 或者
    for(var x in o) {
        alert(o[x]);
    }

制造对象的另外一种方式:构造函数方式

function Rect(w,h){
    this.width = w;
    this.height = h;
    this.area = function() { return this.width * this.height; }
}

var r = new Rect(5, 10);
alert(r.area());
原型对象
  • 对象的protype属性指定了它的原型对象,可以用.运算符志杰读它的原型对象的属性
  • 当写这个属性时,才在它自己内部产生实际的属性

所有的原型对象是共享元素的,只要不去改它,所有的对象都是一样的。实例化之后可以改,改了之后就变成了自己的默认的值了。个人感觉,有点像C++的默认构造函数的味道。

function Person() {}
Person.prototype.name = "Nike";
Person.prototype.age = 29;
Person.prototype.job = "Software Engineer";
Person.prototype.sayName = function() {
    alert(this.name);
}

var person1 = new Person();
person1.sayName();
var person2 = new Person();
person2.sayName();
alert(person1.sayName() === person2.sayName());

原型对象中的元素相当于JAVA中的static变量,所有类的实例化共享。

function Person() {}
Person.prototype = {
    constructor : Person,
    name : "Nicholas",
    age : 29,
    job : "Software Engineer",
    friends : ["Shelby", "Court"],
    sayName : function() {
        alert(this.name);
    }
}
var person1 = new Person();
var person2 = new Person();
person1.friends.push("Van");
alert(person1.friends);
alert(person2.friends);
组合原型和构造方法
function Person() {}
function Person(name, age, job) {
    this.name = name;
    this.age = age;
    this.job = job;
    this.friend = ["Shelby", "Court"];
}

Person.prototype = {
    constructor : Person,
    sayName : function() {
        alert(this.name);
    }
}
var person1 = new Person("Nicholas", 29, "Software Engineer");
var person2 = new Person("Greg", 27, "Doctor");
person1.friend.push("Van");
alert(person1.friend);
alert(person2.friend);
alert(person1.friend === person2.friend);
alert(person1.sayName() === person2.sayName());
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

中小庸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值