<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script type="text/javascript">
/*第一种创建对象的方法*/
var c = {
name: "牛马",
age: 20,
sex: true,
self: function () {
alert("你好");
}
};
console.log(c.name);
console.log(c.self);
/*注意这里是调用的是他的属性是显示他的结构*/
console.log(c.self());/*这里会在控制台打印undifined 但会执行他的方法*/
/*这是调用他的方法
方法的解释:本质上是函数,但他是对象中的函数就叫方法
*/
var b = new Object();
/*因为javascript没有专门的空间来书写执行区*/
/*我们为他new一个空间后下面的写法就是为他的空间中增加属性与赋值*/
b.name = "cv工程师";
b.self = function () {
alert("我是粘贴怪!");
}
console.log(b.name);
console.log(b.self);
console.log(b.self());
/*
*我们的构造方法(无参/有参)直接将写在script标签内就好了
但方法名还是和new出的对象名保持一样开头都大写
*/
function Person() {
}
/*var n = new Person();*/
/*new出的对象会直接调用构造方法*/
/*我们的全局作用域中的方法都是唯一的*/
/*我们未了使全局作用域中减少重名覆盖方法就将对象中要添加的方法放入这个对象的原型中 ,原型中的函数名只在这个对象中有用
那么这个对象原型是什么?这个对象原型就是相当于java中的类模板把这个对象要的方法和变量都放进class模板中再别的类中调用就没有重名覆盖的风险
但是我们的构造函数还是得写在全局作用域中哦!
*/
/*你在new出对象的时候会默认给你弄出一个模板所有相同的类对象都使用一个模板创建哦!*/
Person.prototype.name = "你好哦";
Person.prototype.sayhi = function () {
alert("嗨!")
}
/*为了调用正确性,请把new出的对象写在原型的下方哦!*/
var n = new Person();
n.jk = "yes";
console.log("Person类的属性有:" + Person.hasOwnProperty("jk"));/*hasOwnProperty是object的属性 也就是原型的原型的属性*/
/*jk是添加的属性不是原型中有的属性所以是false*/
/*所有对象的原型都是Object*/
console.log("引用变量n(对象)原型的属性有:" + n.__proto__.hasOwnProperty("jk"));
/*__proto__注意这个proto的两边是两个_*/
/*总结javascript类的Person.prototype 的prototype(原型)是往类模板中添加属性与方法的
__proto__是给引用变量(类变量)用的来找出他的原型
hasOwnProperty(拥有的属性)是用在类模板也就是原型上的
Person原型的原型就是Object类
*/
</script>
</body>
</html>
js对象的两种用法以及对构造函数的使用与原型和原型属性
最新推荐文章于 2022-08-13 09:23:45 发布