javascript原型对象与实例对象属性

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP ‘test3.jsp‘ starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
	<script src="js/jquery-2.1.1.min.js"></script>
	<script>
		//obj.getPrototypeOf根据实例对象获得原型对象
		function Person(){

		}
		Person.prototype.name=‘张三‘;
		Person.prototype.age=‘21‘;
		Person.prototype.sayName=function(){alert(thsi.name);}
		var p1=new Person();
		//alert(p1.name);
		//var prototypeObj=Object.getPrototypeOf(p1);
		//alert(prototypeObj===Person.prototype);
		p1.name=‘王五‘;
		//每次代码读取对象属性时,首先会进行一次搜索,搜索实例对象里name的属性,看看有没有,如果没有,
		//然后再去p1的实例所对应的原型搜索,有就返回,没有返回undefined
		//alert(p1.name);
		//delete p1.name;        
		//alert(p1.name);          //清除添加的name //获得原型对象的属性
		//判断一个对象属性属于原型属性还是实例属性
		var p3=new Person();
		var s=p3.hasOwnProperty(‘name‘);
		//alert(s);               //false
		p3.name=‘赵六‘;
		//alert(p3.hasOwnProperty(‘name‘));      //true

		//in操作符    判断属性是否存在于实例对象和原型对象(无法区分在实例还是原型)
		var p4=new Person();
		var p5=new Person();
		//alert(‘name‘ in p4);          //true
		p5.name=‘旺旺‘;
		//alert(‘name‘ in p5);

		//在原型对象中是否存在属性
		function hasOwnPrototypeBySelf(object,name){
			return !object.hasOwnProperty(name) && name in object;
		}
		//alert(hasOwnPrototypeBySelf(p4,‘name‘));   //true
		//alert(hasOwnPrototypeBySelf(p5,‘name‘));   //false

		//Object.keys()拿到当前对象中所有的属性
		var p6=new Person();
		p6.sex=‘男‘;
		//alert(Object.keys(p6));
		//alert(Object.keys(Person.prototype));

		//constructor属性,该属性不能被枚举出来
		//Object.getOwnPropertyNames()获取所有属性  不关该属性是否可以被枚举
		alert(Object.getOwnPropertyNames(Person.prototype));
	</script>
  </head>
  
  <body>
    This is my JSP page. <br>
  </body>
</html>
时间: 2024-12-29 16:01:57

javascript原型对象与实例对象属性的相关文章

构造函数,原型对象,实例对象

一.构造函数,原型对象,实例对象 1.1 基本概念 1.对象: 属性和方法的集合,即变量和函数的封装. 调用构造函数产生的实例对象, 每个对象都有一个__proto__属性,指向这个对象的构造函数的原型对象. 2.构造器函数: 用于创建对象的函数,通过new关键字生成对象. 函数名一般首字母大写的. 每创建一个函数, 该函数都会自动带有一个prototype属性.该属性是一个指针,指向一个对象,该对象称之为原型对象(后期我们可以使用这个原型对象帮助我们在js中实现继承) 3.原型对象: 默认有一

JS面向对象篇二、什么是原型?原型对象与实例对象、构造函数的关系及相关方法

本文内容: 1.构造函数.原型对象与实例对象之间的关系: 2.isPrototypeOf()和Object.getPrototypeOf(); 3.实例对象上与原型对象上同名的属性处理: 4.hasOwnProperty()方法和in操作符判断属性来自实例对象本身还是它的原型对象: 5.for-in.Object.keys()和Object.getOwnPropertyNames()方法获取实例对象或者原型对象上的属性: 6.需注意的特殊问题 构造函数.原型对象与实例对象 function Pe

javascript函数中的实例对象、类对象、局部变量(局部函数)

定义 function Person(national,age) { this.age = age; //实例对象,每个示例不同 Person.national = national; //类对象,所用实例公用 var bb = 0; //局部变量,外面不能访问(类似局部函数) } 调用 var p = new Person("中国", 29); document.writeln("age:" + p.age); document.writeln("obj

python中类对象、实例对象、类属性、实例属性、类方法、实例方法、静态方法

类对象.类属性与实例对象.实例属性的区别 在Python中一切皆是对象,类是一个特殊的对象即类对象,描述类的属性称为类属性.类属性在内存中只有一份,在__init__外部定义. 通过类创建的对象称为实例对象,描述实例对象的属性称为实例属性.实例属性在各自对象的内存中都保存一份,在__init__方法内部定义. 实例方法.类方法.静态方法的区别 这三种方法都是保存在类的内存中,调用者不同. 实例方法由对象调用,至少一个self参数,self代表对象的引用. 类方法有类调用,至少一个cls参数,并且

python—类对象和实例对象的区别

最近在对RF的通讯层的模块进行封装,需要将之前放在类似main里面的一个方法,如下所示:这段代码是开发提供,用于接口测试,模拟底层通讯,具体的通讯是在dll内,python这边只是做了个封装让RF进行调用.这段通讯层的代码实质上做了五件事: 第一:加载dll: 第二:初始化dll内的通讯参数: 第三:与服务器进行连接,创建session 第四:把数据senbuffer通过sessionManger发送给服务器 第五:取得的数据返回recibuffer def testlogin(ip,port,

python面向对象中类对象、实例对象、类变量、实例变量、类方法、实例方法、静态方法

1. 类对象和实例对象 Python中一切皆对象,Python类本身也是一种对象,类定义完成后,会在当前作用域中定义一个以类名为名字的命名空间.类对象具有以下两种操作: 可以通过"类名()"的方式实例化一个对象. 可以通过"类名.类属性"的方式来访问一个类属性. 如果说类时一种概念性的定义,是一种类别,那么实例对象就是对这一类别的具体化.实例化,即实例化对象是类对象实例化之后的产物. class Person:# 声明一个类对象 pass p1 = Person()

组合,Mixin,类、类对象、实例对象

1.组合,将几个横向关系的组合在一起.所谓的组合就是将类的实例化放到新类里面,那么就将旧类组合进去了. class Turtle: def __init__(self, x): # 注意 init 前面必须双下划线 self.num = x class Fish: def __init__(self, x): self.num = x class Pool: def __init__(self, x, y): self.turtle = Turtle(x) # Pool类中实例化Turtle对象

javascript的构造函数和实例对象、prototype和__proto__的区别,原型对象及构造器的理解

一.前言 我们先通过代码来分别打印出实例对象.构造函数,以及修改了原型对象的构造函数,通过对比内部结构来看看他们之间的区别. //定义构造函数 function Person(name, age){ this.name = name; this.age = age; this.play = function(){ console.log('玩好玩的') } } //实例化对象,并初始化赋值 var per = new Person('kitty', '3'); //打印实例对象 console.

JS面向对象-原型对象,实例对象,构造函数的关系

JS中每创建一个函数,该函数就会自动拥有一个prototype属性,为什么那??  因为最根上的object拥有一个prototype属性,而js中所有的对象又都继承自object,所以js中所有的对象都拥有一个prototype属性,而在js中函数也是对象,所以js中每个函数也都有一个prototype属性. 例如:function Person(){...} 和function Dog(){...} 而每一个prototype属性又会获得一个constructor属性 该constructo