📅  最后修改于: 2023-12-03 15:38:46.052000             🧑  作者: Mango
有时候我们需要重复使用某些公共组件,但是我们又不想每次都手动地复制粘贴,这时候我们可以使用克隆的方法将它们作为父单位,复用它们。
在HTML中,我们可以使用<template>
标签或者<script>
标签来定义模板,然后使用<clone>
方法进行克隆。
<template>
<template id="card-template">
<div class="card">
<img src="">
<h3 class="title"></h3>
<p class="description"></p>
</div>
</template>
<section>
<button id="clone">Clone</button>
<div id="card-container"></div>
</section>
<script>
const cardTemplate = document.querySelector("#card-template");
document.querySelector("#clone").addEventListener("click", () => {
const cardClone = cardTemplate.content.cloneNode(true);
cardClone.querySelector(".title").textContent = "Card Title";
cardClone.querySelector(".description").textContent = "Card Description";
document.querySelector("#card-container").appendChild(cardClone);
});
</script>
利用template
的content
属性,我们可以获取到模板的内容,然后利用cloneNode
方法进行复制。在复制之后,我们可以利用querySelector
等方法获取到复制出来的节点,然后进行相关的操作。
<script>
<body>
<section>
<button id="clone">Clone</button>
<div id="card-container"></div>
</section>
<script type="text/template" id="card-template">
<div class="card">
<img src="">
<h3 class="title"></h3>
<p class="description"></p>
</div>
</script>
<script>
const cardTemplate = document.querySelector("#card-template");
document.querySelector("#clone").addEventListener("click", () => {
const cardClone = document.importNode(cardTemplate.content, true);
cardClone.querySelector(".title").textContent = "Card Title";
cardClone.querySelector(".description").textContent = "Card Description";
document.querySelector("#card-container").appendChild(cardClone);
});
</script>
</body>
在这种方式下,我们将模板放在了<script>
标签里,然后将type
属性设置为text/template
。然后利用document.importNode
方法对模板进行复制。
在JavaScript中,我们可以使用Object.create
方法来将对象作为父对象,创建新的对象实例。
const parent = {
sayHello: function() {
console.log("Hello World!");
}
};
const child = Object.create(parent);
child.sayHello(); // "Hello World!"
利用Object.create
方法,我们创建了一个parent
对象,并且该对象拥有一个sayHello
的方法。然后再创建一个child
对象,将parent
对象作为其父对象。最后我们调用了child
对象上的sayHello
方法,输出了Hello World!
。
通过克隆的方式,我们可以更加方便地复用一些公共组件或者对象实例。在HTML中,我们可以使用<template>
或者<script>
标签来定义模板,然后利用cloneNode
或者importNode
方法进行复制。在JavaScript中,我们可以使用Object.create
方法来将对象作为父对象,创建新的对象实例。