JS高级程序设计-第六章:面向对象的程序设计
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JS高级程序设计-第六章:面向对象的程序设计,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2461字,纯文字阅读大概需要4分钟。
内容图文
![JS高级程序设计-第六章:面向对象的程序设计](/upload/InfoBanner/zyjiaocheng/640/a77417c1bbca41e6b1ccf1351966400f.jpg)
对象的数据属性,可以使用Object.defineProperty 方法修改和设置。Configurable, Enumerable, Writable, Value 共四个特征描述数据属性。
//数据属性的四个特征
var person = {
name: 'Nicholas'
};
//设置为只读属性,不可修改
Object.defineProperty(person, 'name', {
writable: false
});
// person.name = 'Jane';
// alert(person.name) //'Nicholas'
//设置为不可删除特性,一旦把属性定义为不可配置,之后就不能定义为可配置了。
Object.defineProperty(person, 'name', {
configurable: false,
writable: true
});
alert(person.name); //'Nicholas'
delete person.name
alert(person.name); //'Nicholas'
构造函数
使用构造函数实现面向对象编程。
//使用构造函数创建对象
function Person(name, age, job) {
this.name = name;
this.age = age;
this.job = job;
this.sayName = function() {
alert(this.name)
}
}
var person1 = new Person('Nicholas', 29, 'software engineering');
alert(person1.age);
person1.sayName()
//将方法放在构造函数外,避免重复创建相同函数
function Person(name, age, job) {
this.name = name;
this.age = age;
this.job = job;
this.sayName = sayName;
}
function sayName() {
alert(this.name)
}
var person2 = new Person('Greg', 20, 'doctor')
person2.sayName(); //Greg
alert(person2.job) //doctor
理解原型对象,使用hasOwnProperty检测某一属性是否是实例的属性还是原型对象的属性。
//使用 hasOwnProperty 方法检测属性是属于实例还是原型对象
function Person() {};
Person.prototype.name = 'Nic holas';
Person.prototype.age = 29;
Person.prototype.job = 'software engineering';
var person1 = new Person();
console.log(person1.hasOwnProperty('name')); //false
//重新在实例中定义了name属性
person1.name = 'Greg';
console.log(person1.hasOwnProperty('name')); //true
//删除实例中的name属性
delete person1.name ;
console.log(person1.hasOwnProperty('name')); //false
组合使用构造函数模式和原型模式
使用构造函数定义实例属性,用原型定义共用的方法和属性。
// 使用构造函数定义实例属性,原型对象定义共有的方法和属性
function Person(name, age, job) {
this.name = name;
this.age = age;
this.job = job;
this.friends = ['susan', 'jane']
}
Person.prototype = {
constructor: Person,
sayName: function() {
alert(this.name)
}
}
var person1 = new Person('nicholas', 28, 'software engineering');
var person2 = new Person('gregy', 27, 'doctor');
person1.sayName()
// 只改变person2的朋友,person1没有改变
person2.friends.push('john')
alert(person2.friends)
alert(person1.friends)
关于用原型链实现继承的几种方式,因为现在ES6已经普及,不会再用到原型链的方式,因此没有每一段代码都执行,只是粗粗看了一遍。
在养一只虎纹? 发布了12 篇原创文章 · 获赞 1 · 访问量 197 私信 关注内容总结
以上是互联网集市为您收集整理的JS高级程序设计-第六章:面向对象的程序设计全部内容,希望文章能够帮你解决JS高级程序设计-第六章:面向对象的程序设计所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。