本文深入解析 JavaScript 中对象的创建方式及原型机制。通过构造函数、JSON 对象及带参初始化等实例,演示属性与方法的定义。重点讲解原型继承、拷贝继承的实现原理,并剖析原型链顶端默认对象原型的特性,帮助开发者理解对象属性的查找与继承逻辑。
JavaScript 对象与原型概述
本文通过具体实例,详细解析 JavaScript 中对象与 prototype 原型的用法,供读者参考学习。
在程序开发中,对象是核心概念。本文将探讨如何在 JavaScript 中定义类以及创建具体的对象实例。
对象创建方式
<script type="text/javascript">
//创建一个Test对象
function Test(){
}
var test = new Test();
//创建一个对象
var obj = new Object();
//json 对象
var json1 = {};
</script>
类通常包含特定的属性和方法,下面将介绍如何对这些元素进行定义。
属性与方法定义
<script type="text/javascript">
function Test(){
this.name = "谭勇";
this.age = 22;
this.getName = function(){
return this.name;
}
this.getAge = function(){
return this.age;
}
}
var test = new Test();
console.log(test); //查看一下日志
var obj = new Object();
obj.name = "谭勇";
obj.age = "22";
obj.getName = function(){
return this.name;
};
obj.getAge = function(){
return this.age;
};
console.log(obj); //查看下日志
var json1 = {};
json1["name"] = "谭勇";
json1["age"] = 22;
json1["getName"] = function(){
return this.name;
}
json1["getAge"] = function(){
return this.age;
}
console.log(json1); //查看下日志
</script>
首先介绍构造函数的基本用法。
带参构造函数
<script type="text/javascript">
function Test2(name,age){
this.name = name;
this.age = age;
this.getName = function(){
return this.name;
}
this.getAge = function(){
return this.age;
}
}
var test2 = new Test2("谭勇",22);
console.log(test2); //查看下日志
</script>
接着演示带有形参的行为定义方式。
行为形参处理
<script type="text/javascript">
function Test3(){
this.demo = function(param_str){
return param_str;
}
}
var test3 = new Test3();
console.log(test3.demo("aaaaaaaaaaaaaaaaaaaa"));
</script>
随后讲解继承机制的实现。
原型继承实现
<script type="text/javascript">
function parent(){
this.getStr = function(){
return "test str";
}
}
function son(){}
son.prototype = new parent();
var sona = new son();
console.log(sona.getStr());
</script>
介绍拷贝继承的具体操作。
拷贝继承机制
<script type="text/javascript">
function extend(Child, Parent) {
var p = Parent.prototype;
var c = Child.prototype;
for (var i in p) {
c[i] = p[i];
}
}
function parent(){
}
parent.prototype.getStr=function(){
return "test str";
}
function son(){
}
extend(son,parent);
var sona = new son();
console.log(sona.getStr());
</script>
探讨原型的概念及其作用。
原型本质上是一个对象,其他对象可借助它实现属性继承。那么,是否任何对象都能充当原型呢?
答案是肯定的。
接下来分析哪些对象具备原型属性。
默认情况下,所有对象都拥有原型。由于原型本身也是对象,因此每个原型自身也包含一个原型。唯一的例外是位于原型链顶端的那个默认对象原型。
原型链与默认原型
<script type="text/javacript">
var str = "谭勇";
String.prototype.getName = function(){
var strs = "";
for(var i=0;i<this.length;i++){
strs += this[i];
}
return strs;
}
console.log(str.getName());
console.log(str);
console.log(str[0]);
</script>
感兴趣的朋友可以使用在线 HTML/CSS/JavaScript 代码运行工具:http://tools.jb51.net/code/HtmlJsRun 测试上述代码运行效果。
更多关于 JavaScript 相关内容感兴趣的读者可查看本站专题:《javascript 面向对象入门教程》、《JavaScript 错误与调试技巧总结》、《JavaScript 数据结构与算法技巧总结》、《JavaScript 遍历算法与技巧总结》及《JavaScript 数学运算用法总结》
希望本文所述对大家 JavaScript 程序设计有所帮助。