将 showName 函数定义移出了 Flower 构造函数,并在构造函数中直接引用了该函数。这种优化方式可以避免在每个对象实例化时都创建一个新的 showName 函数,而是共享同一个函数,节省了内存空间。
<script>function Flower(name,genera,area,uses){this.name=name;this.genera=genera;this.area=area;this.uses=uses;this.showName=showName;}function showName(){alert(this.name);}var flower1=new Flower("长春花","夹竹桃科 长春花属","非洲、亚热带、热带以及中国大陆的华东、西南、中南等地","观赏或用药等");var flower2=new Flower("牡丹","芍药科 芍药属","中国","观赏、食用或药用");var flower3=new Flower("曼陀罗花","茄科 曼陀罗属","印度、中国北部","观赏或药用");flower1.showName();flower2.showName();flower3.showName();alert(flower1 instanceof Object);alert(flower1 instanceof Flower);alert(flower2 instanceof Object);alert(flower2 instanceof Flower);alert(flower3 instanceof Object);alert(flower3 instanceof Flower);alert(flower1.constructor==Flower);alert(flower2.constructor==Flower);alert(flower3.constructor==Flower);
</script>